2016-08-08 5 views
0

コンボボックスの値を設定することに関するいくつかの記事を読んだが、解決策はまだ出てこなかった。DataGridViewComboBoxColumn値をDatatableに基づいて設定

以下は、私がやりたいことの基本的な例です。コメントには、私がしたいことがあります。どんな助けもありがとうございます。

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 =" True "'(または "False")。ただし、代わりにチェックボックスを使用し、Trueをチェックし、Falseをチェックしないことを検討することもできます... –

+0

SelecteditemはDataGridViewColumnボックスのメンバーではありません - TrueとFalseは概念です。テキストとして赤い青色の黄色であってもよい。 – coder32

答えて

1

あなたは別のノートでCells.Value ...

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

を設定することにより、valueを設定することができ、あなたはDataTableを通じてDataGridViewが、ループにDataSourceを設定します。 DataGridViewの各行を設定したい場合は、これは動作しません。

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 

あなたはDataGridViewの各DataGridViewRowをループに必要とComboBox値を設定します。たとえば...

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

あなたは正しいです。ちょっと前に、データテーブルではなくdatagridviewをループしなければならないと考えました。セルの値をこれまでの値に設定します。 – coder32

+0

助けになるのはうれしい! – Codexer

関連する問題