【问题标题】:How to add a checkbox control to a datatable?如何将复选框控件添加到数据表?
【发布时间】:2011-08-03 14:36:06
【问题描述】:

如何将复选框添加到数据表并将其绑定到数据网格?

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
}

请帮忙。

【问题讨论】:

  • 这是winforms吗? WPF? asp.net?
  • 到目前为止你有什么?
  • 您混淆了可视控件和数据源:您不能将复选框添加到 DataTable,因为复选框是可视控件,而 DataTable 是只有数据。但是,您可以将复选框列添加到 DataGridView(它一个可视控件,可以将数据绑定到 DataTable)。

标签: c# .net datatable


【解决方案1】:

您必须在 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 (Selected) 显示 DataGridViewCheckBoxColumn,为第二个 DataColumn (Text) 显示 DataGridViewTextBoxColumn

【讨论】:

  • +1。我会在您的回答中添加自动创建的可视列是DataGridViewCheckBoxColumn,以防 OP 想要手动添加它。
  • 当使用 DataGridViewCheckBoxColumn 时,是否可以在一列中同时显示 CheckBox 和文本?如何绑定两者?
  • DataGridViewCheckBoxColumn 中不能有文本。文本将出现在不同的列中。请参阅我的修订版以了解如何做到这一点。
【解决方案2】:

您必须指定列的类型。

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

但是为什么要在 DataTable 中添加控件呢?为什么不只是一个字符串或一个整数?

【讨论】:

  • 但这并没有在数据网格中显示任何复选框。我需要将复选框绑定到网格,并将一些文本绑定到复选框。
  • 您必须将 DataGridCheckBoxColumn 添加到 Datagrid 并将该列绑定到 DataTable 中的字段。无需在 DataTable 中添加复选框。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 2018-05-29
  • 2014-03-03
相关资源
最近更新 更多