2013-03-19 41 views
0

幾個月前我在網上發現了此代碼。創建datagridview列非常棒。我從來沒有用它來創建一個comboboxcolumn。現在我需要這樣做,並不知道如何將值分配給列。而且,我無法找到我第一次找到此代碼的位置。我現在可以找到它的片段,但沒有完成。如何使用此代碼創建DataGridView列

可以很容易地在他們的值來創建textboxcolumn創造DGV行。但是,我不知道如何創建一個combobox列。順便說一句,在這種情況下,列可以爲每一行使用相同的組合框值。

這裏是我的代碼:

我創建了一個數據表來保存數據綁定到DGV:

Dim dt As New DataTable("Grid") 
Dim dr As DataRow 
dtSetupColumns(dt) 

Public Sub dtSetupColumns(ByRef dt As DataTable) 
     dt.Columns.Add("name_l", GetType(String)) 
     dt.Columns.Add("name_f", GetType(String)) 
     dt.Columns.Add("state", GetType(String)) 
End Sub 

分配值到DataTable:

dr = dt.NewRow() 
dr("name_l") = ' from query table 
dt.Rows.Add(dr) 

創建在DataGridView列:

dgvCreateColumns(dgv) 

Public Sub dgvCreateColumns(ByRef inDataGridView As DataGridView) 
    With inDataGridView.Columns 
    .Add(dgvCreateColumn(ColumnStyle.TextBoxColumn, String.Empty, "Last Name", "name_l", 80, DataGridViewContentAlignment.MiddleLeft)) 
    .Add(dgvCreateColumn(ColumnStyle.TextBoxColumn, String.Empty, "First Name", "name_f", 80, DataGridViewContentAlignment.MiddleLeft)) 
    .Add(dgvCreateColumn(ColumnStyle.ComboBoxColumn, String.Empty, "State", "state", 80, DataGridViewContentAlignment.MiddleLeft)) 
    End With 
End Sub 


Public Shared Function dgvCreateColumn(ByVal ColumnType As ColumnStyle, ByVal format As String, ByVal headerText As String, ByVal dataPropertyName As String, ByVal width As Integer, ByVal alignment As DataGridViewContentAlignment, Optional ByVal bMakeVisible As Boolean = True, Optional ByVal inReadOnly As Boolean = False) As DataGridViewColumn 
     Dim dgvC As DataGridViewColumn = Nothing 

     Select Case ColumnType 
      Case ColumnStyle.ButtonColumn 
       dgvC = New DataGridViewButtonColumn 
      Case ColumnStyle.CheckBoxColumn 
       dgvC = New DataGridViewCheckBoxColumn 
      Case ColumnStyle.ComboBoxColumn 
       dgvC = New DataGridViewComboBoxColumn 
      Case ColumnStyle.ImageColumn 
       dgvC = New DataGridViewImageColumn 
      Case ColumnStyle.LinkColumn 
       dgvC = New DataGridViewLinkColumn 
      Case ColumnStyle.TextBoxColumn 
       dgvC = New DataGridViewTextBoxColumn 
     End Select 

     With dgvC 
      .DataPropertyName = dataPropertyName 
      .DefaultCellStyle.Alignment = alignment 
      .DefaultCellStyle.Format = format 
      If ColumnType = ColumnStyle.ButtonColumn Then 
       '.colum() 
      End If 
      .HeaderText = headerText 
      .Name = headerText 
      .ReadOnly = inReadOnly 
      If width = 0 Then 
       .Visible = False 
      Else 
       .Width = width 
       If bMakeVisible = False Then 
        .Visible = False 
       Else 
        .Visible = True 

       End If 
      End If 
     End With 

     Return dgvC 
    End Function 

回答

0

你必須去通每個單元格中的每一行

For i as Integer = 0 to dgv.Rows.Count -1 
    Dim gridComboBox As New DataGridViewComboBoxCell 
    gridComboBox.DataSource = dt 
    gridComboBox.ValueMember = dt.Columns(0).ColumnName 
    dgv.Item(2, i) = gridComboBox 'Change the Cell in Column:2 Row:i to ComboBox 
Next