2015-04-21 94 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);