2016-07-12 5 views
0

datagridview 크리에이터에서 수동으로 만든 4 개의 열을 포함하는 datagridview를 사용하십시오. 첫 번째, 두 번째 및 세 번째 열은 텍스트 상자 열이지만 마지막 열은 comboboxcolumn으로 표시됩니다. 내 양식에 버튼이 있는데, 사용자가 클릭하면 새 행이 DataGridview에 추가됩니다. 처음 세 열의 데이터는 일부 변수에서 채워지고 마지막 콤보 열은 사용자가 데이터 소스에서 채워야하므로 값을 선택할 수 있습니다. . 문제는 내가이 콤보 상자 열 문제가되고 지금까지의 그것을 채울 수없는이 콤보 상자가있는 Datagridview는 기입 할 수 없습니다

는이 시도 내 실제 코드

Private Sub myButton_Click(sender As Object, e As EventArgs) Handles btnAddMatType.Click 

Dim dt as DataTable 
dt = New Variation().GetAll() 'returning Ids and Names 

       Dim cbo = CType(dgvMaterials.Columns(3), DataGridViewComboBoxColumn) 
       cbo.Items.AddRange(dt.AsEnumerable().Select(Function(s) s.Field(Of String)("Name")).ToArray()) 

      try 
       Dim rodzajID as String = TreeMaterials.SelectedValue 
       Dim rodzajName as string = TreeMaterials.SelectedNode.Text 
       Dim material as string = TreeMaterials.SelectedNode.Parent.Text 

       dgvMaterials.Rows.Add(material, rodzajName, rodzajID) 
End Sub 
입니다 : 두 경우 모두

Private Sub myButton_Click(sender As Object, e As EventArgs) Handles btnAddMatType.Click 
Dim dt as DataTable 
dt = New Variation().GetAll() 'returning Ids and Names 
Dim cbo = CType(dgvMaterials.Columns(3), DataGridViewComboBoxColumn) 
cbo.DataSource = dt 
cbo.ValueMember = "Id" 
cbo.DisplayMember = "Name" 
Dim rodzajID as String = TreeMaterials.SelectedValue 
Dim rodzajName as string = TreeMaterials.SelectedNode.Text 
Dim material as string = TreeMaterials.SelectedNode.Parent.Text 

dgvMaterials.Rows.Add(material, rodzajName, rodzajID) 
End Sub 

때마다 사용자가 클릭 버튼 행은 DataGrid에 추가되지만 마지막 열의 콤보 박스는 비어 있습니다. 어떻게 해결할 수 있을까요?

+0

, 올바른 하나에 액세스해야합니다. 그렇지 않으면 데이터가 항목 컬렉션에 있음을 알 수 있습니다. CBO를 열려면 사용자가 2ce를 클릭해야합니다 (처음으로 행을 선택 함). 최후의 수단으로 디자이너를 열고 CBO 열을 제거하고 프로젝트를 저장 한 다음 다시 추가하십시오. 실수로 일부 속성을 설정하여 작동하지 못하게 할 수도 있습니다. – Plutonix

+0

... 예를 들어 실수로 열 편집기에서 cbo 열을 ReadOnly로 설정 한 경우 열지 않습니다. – Plutonix

답변

0

는 원하는 열을 asociate 당신으로 comboBox이 줄을 추가하십시오 :

형태에 이상 1 DGV가있는 경우
dgvMaterials.Columns.Insert(3, cbo) 
관련 문제