Hallo, ich habe ein großes Problem mit Comboboxen in meinem DataGridView.
Ich bekomm einfach keine Daten da rein.
Das Grid kommt in der Applikation zig mal vor, immer anders. D.h. es ist eine Klasse MyGrid definiert, die sich von DataGridView ableitet. Das aber auch erst seit knapp 1 Woche. Vorher (das Programm ist noch aus VB6 Zeiten) leitete es sich von DataGrid ab und ich bin dabei das ganze auf .net 2.0 umzustellen.
Mit dem DataGrid wurden die Tabellen über TableStyles definiert und irgendwo im Code (fragt mich nicht wo, ein Teller Spagetthi ist geordneter) passiert das immernoch. Von diesen Styles muss ich nun die Spalten des Grids ableiten. Bei normalen TextBoxColumns und CheckBoxColumns (vorher BooleanColumn) funktioniert das auch astrein. Aber mit den ComboBoxColumns renn ich momentan gegen Betonwände.
Hier mal mein Code für die Übernahme aus den TableStyles. Vielleicht sieht ja jemand, was ich falsch mache, oder anders machen muss:
EDIT: Noch zur Erklärung. Sämtliche Formulare im Programm werden in XML-Dateien definiert. Da drin sind auch das Grid und seine Spalten definiert. Irgendwo wird das ganze dann ausgelesen und daraus diese Table-Styles gebastelt. Diese Stelle hab ich noch nicht identifizieren können.
Ich bekomm einfach keine Daten da rein.
Das Grid kommt in der Applikation zig mal vor, immer anders. D.h. es ist eine Klasse MyGrid definiert, die sich von DataGridView ableitet. Das aber auch erst seit knapp 1 Woche. Vorher (das Programm ist noch aus VB6 Zeiten) leitete es sich von DataGrid ab und ich bin dabei das ganze auf .net 2.0 umzustellen.
Mit dem DataGrid wurden die Tabellen über TableStyles definiert und irgendwo im Code (fragt mich nicht wo, ein Teller Spagetthi ist geordneter) passiert das immernoch. Von diesen Styles muss ich nun die Spalten des Grids ableiten. Bei normalen TextBoxColumns und CheckBoxColumns (vorher BooleanColumn) funktioniert das auch astrein. Aber mit den ComboBoxColumns renn ich momentan gegen Betonwände.
Hier mal mein Code für die Übernahme aus den TableStyles. Vielleicht sieht ja jemand, was ich falsch mache, oder anders machen muss:
Code:
Public Sub TableStyleAdd(ByVal value As DataGridTableStyle) MyTableStyle = value Dim ind As Integer = 0 Dim zusatz As Integer = 0 '## wenn Zusatzliche Spalte dann den Zähler ein Hoch For Each gcs As DataGridColumnStyle In MyTableStyle.GridColumnStyles 'Dim test As String = Me.MyTableStyle.GridColumnStyles(ind).GetType.Name Select Case Me.MyTableStyle.GridColumnStyles(ind).GetType.Name Case "CC_DataGridBoolColumn" Dim checkCol As New DataGridViewCheckBoxColumn checkCol.Name = gcs.MappingName checkCol.HeaderText = gcs.HeaderText Me.Columns.Add(checkCol) Case "CC_DataGridComboBoxColumnStyle" Dim comboCol As New DataGridViewComboBoxColumn comboCol.Name = gcs.MappingName comboCol.HeaderText = gcs.HeaderText comboCol.DisplayMember = gcs.MappingName & "_$ID" '## zusätzliche Spalte anlegen Dim textCol As New DataGridViewTextBoxColumn textCol.Name = gcs.MappingName & "_$ID" textCol.HeaderText = "" textCol.Visible = False textCol.DataPropertyName = gcs.MappingName zusatz += 1 Me.Columns.Add(comboCol) Me.Columns.Add(textCol) Case Else Me.Columns.Add(gcs.MappingName, gcs.HeaderText) End Select Dim col As DataGridViewColumn = Me.Columns(ind + zusatz) col.Width = gcs.Width col.ReadOnly = gcs.ReadOnly col.DataPropertyName = gcs.MappingName If col.Width <= 5 Then col.Visible = False End If ind += 1 Next Me.RowHeadersVisible = MyTableStyle.RowHeadersVisible Me.RowHeadersWidth = MyTableStyle.RowHeaderWidth + 5 Me.ColumnHeadersVisible = MyTableStyle.ColumnHeadersVisible Me.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells Me.AllowUserToAddRows = Me.RowHeadersVisible End Sub
EDIT: Noch zur Erklärung. Sämtliche Formulare im Programm werden in XML-Dateien definiert. Da drin sind auch das Grid und seine Spalten definiert. Irgendwo wird das ganze dann ausgelesen und daraus diese Table-Styles gebastelt. Diese Stelle hab ich noch nicht identifizieren können.
Comment