Hallo,
ich habe noch ein paar Fragen zum DataGrid, nachdem bisher so toll geholfen wurde 
Ich möchte gerne eine Art DropDown-Liste in manche Spalten einfügen. Gibt es soetwas?
Dann möchte ich gerne entweder ein paar Spalten ReadOnly machen oder ein paar Spalten ausblenden. Wer kann mir dabei helfen?
Danke & Grüße
Sven
Noch eine Frage hinten dran 
Hallo
und gleich noch eine Frage bei der ihr mir bestimmt helfen könnt:
Ich muss die einzelnen Datensätze noch verarbeiten.
Wie mach ich das am besten?
Sowas wie DataSet.Item[5(row),2(column)].value hab ich nicht gefunden 
Danke und bye!
Hallo Sven,
Ich möchte gerne eine Art DropDown-Liste in manche Spalten
einfügen. Gibt es soetwas?
Ja, dazu ist aber etwas action nötig. Hatte soetwas mal über Google gefunden, aber war mir aber zu fummelig. Ich „male“ jetzt ein LOV über die selektierte Zeile in die entsprechende Zelle. Ist zwar Suboptimal, aber programmtechnisch einfach. Beim Zeilenwechsel den Wert in die Zelle schreiben.
Dann möchte ich gerne entweder ein paar Spalten ReadOnly
machen oder ein paar Spalten ausblenden. Wer kann mir dabei
helfen?
Du must einenen DataGridTableStyle und der Tabelle zuordnen (MappingName) Dies beinhaltet GridColumnStyles, mit dem man die einzelnen Spalten formatieren kann: …Width = 0.
DataGridTableStyle myGridStyle = new DataGridTableStyle();
myGridStyle.MappingName = "NamesTable";
DataGridTextBoxColumn nameColumnStyle =
new DataGridTextBoxColumn();
nameColumnStyle.MappingName = "Name";
nameColumnStyle.HeaderText = "Name";
myGridStyle.GridColumnStyles.Add(nameColumnStyle);
DataGridTimePickerColumn timePickerColumnStyle =
new DataGridTimePickerColumn();
timePickerColumnStyle.MappingName = "Date";
timePickerColumnStyle.HeaderText = "Date";
timePickerColumnStyle.Width = 100;
timePickerColumnStyle.ReadOnly = false;
myGridStyle.GridColumnStyles.Add(timePickerColumnStyle);
grid.TableStyles.Add(myGridStyle);
Falls du noch nicht kennst: Denke daran, das du nur ein eDataView vor die hast. Wenn man die sortieren läst, stimmen die Zeilen mit den Zeilen der Tabelle nicht mehr überein!
Falls du noch Code Beispiele brauchst, morgen hab ich welceh im Zugriff, dann ist Weihnachten!
mfg
Dirk.Pegasus
Hallo Dirk,
gerne kannst du mir noch Code Beispiele zukommen lassen.
INsbesondere das mit dem Malen der Liste über den Spaltennamen!
Danke dir und frohe weihnachten!
Grüße
Sven
mfg
Dirk.Pegasus
Hallo Sven,
Dumm gelaufen. Hatte das Projekt auf einem Stick extra mit nach Hause nehmen wollen, aber die Kopie ist unvollständig. Wenn das dringend ist (bin planmäßig erst am 8.1. wieder im Büro) muss ich da mal anrufen. Meld dich mal!
Ansonsten ein frohes Fest!
mfg
Dirk.Pegasus
Hallo,
war jetzt auch drei Tage weg, also sehr dringend ist es nicht, wenn du es mir nach dem 8.1. geben kannst, reicht mir das völlig!
Tausend Dank und ein schönes Recht-Weihnachtsfest und guten Rutsch!
Liebe Grüße
Sven
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Sven,
dir auch frohe Weihnachten und einen guten Rutsch gehabt zu haben!
Hier das Malen des LOV:
//irgendwo als var deklarieren
protected System.Windows.Forms.ComboBox type;
//dann das LOV mit den Werten füllen.
//
//
//für das später benötigte ...Find(id) muss die Tabelle einen PrimaryKey haben!
//xmlTable ist die Datentabelle für das DataGrid xmlGrid, das gleich benutzt wird!
DataColumn[] col = new DataColumn[1];
col[0] = xmlTable.Columns["id"];
xmlTable.PrimaryKey = col;
xmlGrid.DataSource = xmlTable;
//
//ich steuere mit fast allen events "meine" Funktion changeView() an.
//in der ist bei mir der folgende Code enthalten:
//xmlGrid ist das DataGrid, in dem das lov sein soll
if (xmlGrid.CurrentRowIndex != -1)
{
rec = xmlGrid.GetCellBounds(xmlGrid.CurrentRowIndex,1);
type.Left = rec.Left + xmlGrid.Left;
type.Top = rec.Top + xmlGrid.Top;
type.Height = rec.Height;
type.Width = rec.Width;
type.BringToFront();
if (
type.Top xmlGrid.Left + xmlGrid.Width - type.Width - 12
|| type.Left xmlGrid.Top + xmlGrid.Height - type.Height + 2
)
type.Visible = false;
}
else
type.Visible = false;
//
//
// dazu ein Eventhandler, der den Wert des LOV zurückschreibt:
private void type\_SelectedIndexChanged(object sender, System.EventArgs e)
{
bindingManager = xmlGrid.BindingContext[xmlGrid.DataSource];
DataRow dr = ((System.Data.DataRowView) bindingManager.Current).Row;
string id = dr["id"].ToString();
DataRow currentChild = xmlTable.Rows.Find(id);
currentChild["type"] = type.Text;
xmlTable.AcceptChanges();
}
Das Positionieren des LOV habe ich noch nicht „ausgereizt“. Je nachdem wie man die Spalten formatiert oder scrollt, kann das schonmal komisch aussehen. Aber im Wesentlichen tuts das! Verbesserungen(-vorschläge) nehme ich natürlich gerne an!
War das „Formatieren der Spalten“ ausreichend? Oder auch da noch ein Beispiel gefällig?
Noch Fragen?
mfg
Dirk.Pegasus