2016-08-08 10 views
0

Ich las mehrere Artikel über die Einstellung der Wert einer Combobox, aber ich konnte immer noch nicht mit einer Lösung kommen.Set DataGridViewComboBoxColumn Wert Basierend auf einer Datentabelle

Unten ist ein grundlegendes Beispiel für was ich tun möchte und in den Kommentaren ist genau das, was ich tun möchte. Jede Hilfe wird geschätzt.

Public Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    Dim dt As New DataTable 
    dt.Columns.Add("ID") 
    dt.Columns.Add("Name") 
    dt.Columns.Add("Value") 
    dt.Columns(0).AutoIncrement = True 

    For i As Integer = 0 To 20 
     Dim R As DataRow = dt.NewRow 
     R("Name") = "Test" & Date.Now & "" & i 
     If i = 2 Or i = 5 Or i = 6 Or i = 8 Or i = 10 Then 
      R("Value") = "yes" 
     Else 
      R("Value") = "no" 
     End If 
     dt.Rows.Add(R) 
     DataGridView1.DataSource = dt 
    Next 

    DataGridView1.ReadOnly = False 

    Dim cmb As New DataGridViewComboBoxColumn() 
    cmb.HeaderText = "Select Data" 
    cmb.Name = "cmb" 
    cmb.MaxDropDownItems = 2 
    cmb.Items.Add("True") 
    cmb.Items.Add("False") 
    DataGridView1.Columns.Add(cmb) 

    For Each dr As DataRow In dt.Rows 
     If dr("Name").ToString = "Test" Then 
      'set the combo box value to True 
     Else 
      'set the combobox value to False 
     End If 
    Next 

End Sub 
+1

'cmb.SelectedItem =" Wahr "(oder" Falsch "). Sie sollten jedoch in Erwägung ziehen, stattdessen ein Kontrollkästchen zu verwenden, das auf "True", nicht auf "False" überprüft wird. –

+0

Ausgewähltes Element ist kein Mitglied des Feldes DataGridViewColumn - True und False ist ein Konzept. Könnte Rot Blau Gelb wie der Text sein. – coder32

Antwort

1

Sie die value die Cells.Value ... indem einstellen

DataGridView1.Rows(whatrowdoyouwant).Cells("cmb").Value = True 

Auf einer anderen Anmerkung, stellen Sie die DataSource zum DataGridView, sondern Schleife durch die DataTable. Wenn Sie jede Zeile in DataGridView setzen möchten, wird dies nicht funktionieren.

For Each dr As DataRow In dt.Rows 
    If dr("Name").ToString = "Test" Then 
     'set the combo box value to True 
    Else 
     'set the combobox value to False 
    End If 
Next 

Sie würden durch jede DataGridViewRow im DataGridView und stellen Sie den ComboBox Wert Schleife benötigen. Zum Beispiel ...

For i As Integer = 0 To DataGridView1.Rows.Count - 1 
    If DataGridView1.Rows(i).Cells("Name").Value.ToString = "Test" Then 
     DataGridView1.Rows(i).Cells("cmb").Value = True 
    Else 
     DataGridView1.Rows(i).Cells("cmb").Value = False 
    End If 
Next 
+0

yep Sie sind richtig. Ich habe das vor einiger Zeit herausgefunden, dass ich die Datagridview und nicht die Datentabelle durchlaufen müsste. Setzen Sie dann den Zellenwert auf was auch immer. – coder32

+0

Ich bin froh, Ihnen helfen zu können! – Codexer

Verwandte Themen