2015-04-21 95 views
-1

问题 如何将comboBoxcolumn添加到dataTable而不仅仅是网格?我尝试设置“连接器名称”一栏是一个comboboxcolumn,但显然我不这样做是正确的。将组合框列添加到winform中的数据表中

我有什么(片段):

if (_DtMain.Columns.Count == 0) 
      { 

       var cols = new List<DataColumn>(); 
       cols.Add(new DataColumn("PocketName", typeof(string))); 
       cols.Add(new DataColumn("KeyIndex", typeof(string))); 
       cols.Add(new DataColumn("SortOrder", typeof(int))); 
       cols.Add(new DataColumn("ConnectorName", typeof(DataGridViewComboBoxColumn))); 
       _DtMain.Columns.AddRange(cols.ToArray()); 
       dataGridView1.DataSource = _DtMain.DefaultView; 

      } 

编辑

这是我的新的解决方案:

if (_DtMain.Columns.Count == 0) 
    { 
     var colPN = new DataGridViewTextBoxColumn(); 
     var colCN = new DataGridViewComboBoxColumn(); 
     var colKI = new DataGridViewTextBoxColumn(); 
     var colSO = new DataGridViewTextBoxColumn(); 

     dgvHeaderEdit.Columns.Add(colPN); 
     dgvHeaderEdit.Columns.Add(colCN); 
     dgvHeaderEdit.Columns.Add(colKI); 
     dgvHeaderEdit.Columns.Add(colSO); 

     colPN.HeaderText = "Pocket Name"; 
     colPN.DataPropertyName = "Pocket Name"; 

     colCN.HeaderText = "Connector Name"; 
     colCN.DataPropertyName = "Connector Name"; 

     colKI.HeaderText = "Key Index"; 
     colKI.DataPropertyName = "Key Index"; 

     colSO.HeaderText = "Sort Order"; 
     colSO.DataPropertyName = "Sort Order"; 

     _DtMain.Columns.Add(new DataColumn("Pocket Name", typeof(string))); 
     _DtMain.Columns.Add(new DataColumn("Connector Name", typeof(string))); 
     _DtMain.Columns.Add(new DataColumn("Key Index", typeof(string))); 
     _DtMain.Columns.Add(new DataColumn("Sort Order", typeof(int))); 


dgvHeaderEdit.AutoGenerateColumns = false; 
       dgvHeaderEdit.DataSource = _DtMain.DefaultView; 
+0

为什么要将'ComboBox'添加到'DataTable'?尝试使用'Collection'对象 –

+0

'col.Columns.Add(新的DataColumn( “SomeCollection” 的typeof(名单)));' – MethodMan

+0

@MethodMan的列不使用cols.Add不显示(新的DataColumn(“连接器名称”的typeof(列表))); –

回答

0

使用这种方式: 当建立了数据表网格的数据源:

DataTable dt = new DataTable(); 
      dt.Columns.Add("PocketName", typeof(string)); 
      dt.Columns.Add("KeyIndex", typeof(string)); 
      dt.Columns.Add("SortOrder", typeof(int)); 
      dt.Columns.Add("ConnectorName", typeof(int)); 

      dgv.DataSource = dt; 

现在为GridView创建组合框列&数据源对于此ComboBox。 添加所有值dtConnectorSource 在组合框显示与您在ComboBox需要值填入dtConnectorSource。

DataTable dtConnectorSource = new DataTable(); 

dtConnectorSource.Columns.Add("ConnectorName", typeof(int)); 
dtConnectorSource.Columns.Add("ConnectorNameDisplay", typeof(String)); 

    DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn(); 
    cmb.DataSource = dtConnectorSource; 
    cmb.DisplayMember = "ConnectorNameDisplay"; 
    cmb.ValueMember = "ConnectorName"; 

    cmb.DataPropertyName = "ConnectorName"; 

    dgv.Columns.Add(cmb);