2013-03-19 2 views
0

몇 달 전에이 코드가 웹에서 발견되었습니다. DataGridview 열을 만드는 데 좋습니다. 나는 comboboxcolumn을 생성하는 데 사용한 적이 없다. 이제 그 작업을 수행해야하며 값을 열에 할당하는 방법을 알 수 없습니다. 그리고이 코드를 처음 발견 한 곳을 찾을 수 없습니다. 나는 지금 그것의 발췌 문장을 찾을 수 있지만 완전한 것은 아무것도 아니다.이 코드를 사용하여 DataGridView 열을 만드는 방법

textboxcolumn을 만들고 값이있는 dgv 행을 만드는 것은 쉽습니다. 그러나, 나는 comboboxcolumn를 만드는 방법을 모른다. 그런데이 경우 열은 각 행에 대해 동일한 콤보 상자 값을 사용할 수 있습니다. 내가 데이터를 보유하는 데이터 테이블을 만들

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 

지정 값을 : 여기

내가 가진 코드의

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 
관련 문제