2011-04-12 94 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

相关问题