2011-04-12 55 views
16

如何將複選框添加到數據表並將其綁定到數據網格?如何將複選框控件添加到數據表?

DataTable ColumnList = new DataTable(); 
ColumnList.Columns.Add("Column Fields"); 

int j = 1, i = 0; 
CheckBox colCheckbox = new CheckBox(); 
foreach (Columns col in ColumnNames) 
{ 
    colCheckbox.Name = col.ColumnName;  
    ColumnList.Rows.Add(colCheckbox); // This is getting displayed as System.Windows.Forms.CheckBox,CheckState=0 
} 

請幫忙。

+0

這是winforms嗎? WPF? asp.net? – 2011-04-12 05:56:21

+0

它的窗體形式 – NewBie 2011-04-12 06:06:50

+0

到目前爲止你有什麼? – 2011-04-12 06:10:17

回答

40

您必須在DataTable中有一個boolean字段(列)。將DataTable綁定到DataGridView時,將爲該boolean字段創建一個複選框列。

示例代碼:

var dt = new DataTable(); 
dt.Columns.Add(new DataColumn("Selected", typeof(bool))); //this will show checkboxes 
dt.Columns.Add(new DataColumn("Text", typeof(string))); //this will show text 

var dgv = new DataGridView(); 
dgv.DataSource = dt; 

這將綁定dt DataTable添加到dgv的DataGridView。 DataGridView將自動顯示第一個DataColumn的DataGridViewCheckBoxColumn選定的)和DataGridViewTextBoxColumn的第二個DataColumn(文本)。

+1

+1。我會添加到您的答案,自動創建的視覺列是['DataGridViewCheckBoxColumn'](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcheckboxcolumn.aspx),如果OP想要手動添加它。 – stakx 2011-04-12 10:40:33

+0

當使用DataGridViewCheckBoxColumn時,是否可以在一列中顯示CheckBox和文本?我怎麼能綁定兩個? – NewBie 2011-04-12 12:54:32

+1

在DataGridViewCheckBoxColumn中不能有文本。該文本將顯示在不同的列中。請參閱我的修訂以瞭解如何執行此操作。 – 2011-04-12 14:16:41

-1

您必須指定列的類型。

ColumnList.Columns.Add("Column Fields", gettype(CheckBox)); 

但是,爲什麼要將控件添加到DataTable?爲什麼不只是一個字符串或整數?

+0

但是這不會在數據網格中顯示任何複選框。我需要將複選框綁定到網格,並將某些文本綁定到複選框。 – NewBie 2011-04-12 09:32:05

+0

您必須將DataGridCheckBoxColumn添加到Datagrid並將該列綁定到DataTable中的字段。沒有必要爲DataTable添加複選框。 – Rhapsody 2011-04-12 09:34:46

相關問題