Data Grid Auf Dem Compact Framework
Das DataGrid auf dem .NET Compact framework für Pocket PC
Verstecken von Spalten im DataGrid beim Object-Binding
Problem
Wird das DataGrid nicht an ein DataTable Objekt gebunden sondern an eine Collection, womöglich noch an eine eigene Klasse die von einer anderen (möglicherweise generischen Collection) abgeleitet ist gibt es Probleme mit dem Mapping eines DataGridTableStyle
. Normalerweise muss DataGridTableStyle.MappingName
dem namen des DataTables
entsprechen. Wird eine Collegtion gebunden, muß es der (case-sensitive) Typname sein. nur wie ist es bei einer generischen Collection?
Beispiel
// Customer ist eine einfache Klasse mit Properties für Name, Adresse, Plz und Ort
// DGcustomers ist das DataGrid des aktuellen formulars
customerlist = new BindingList<Customer>;
DGcustomers.DataSource = customerlist;
DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = "BindingList`1"; // Mapping-Typ-Name der Generischen Collection - äußerst seltsam
DataGridTextBoxColumn col = new DataGridTextBoxColumn();
col.MappingName = "Id";
col.Width = 0; // Eine Möglichkeit die Spalte zu verstecken ist eine Breite 0. Es gibt aber noch bessere, die werden später hier veröffentlicht ;-)
ts.GridColumnStyles.Add(col);
col = new DataGridTextBoxColumn();
col.MappingName = "Name";
col.HeaderText = "Firma";
col.Width = 70;
ts.GridColumnStyles.Add(col);
col = new DataGridTextBoxColumn();
col.MappingName = "Adresse";
col.HeaderText = "Adresse";
col.Width = 50;
ts.GridColumnStyles.Add(col);
col = new DataGridTextBoxColumn();
col.MappingName = "Plz";
col.HeaderText = "Plz";
col.Width = 30;
ts.GridColumnStyles.Add(col);
col = new DataGridTextBoxColumn();
col.MappingName = "Ort";
col.HeaderText = "Ort";
col.Width = 50;
ts.GridColumnStyles.Add(col);
DGcustomers.TableStyles.Add(ts);