1

我有一组数据从另一个 DataGridView 进入 DataGridView(在此处描述,问题已解决)。

我现在希望向我的 DataSet 添加两个新列,一个 Integer,一个 Boolean,其中 Integer 列的类型为 DataGridViewNumericUpDownColumn(谢天谢地从这个 MSDN 页面中窃取),而 Boolean 列的类型为 DataGridViewCheckBoxColumn。

如果我将列直接添加到 DataSet,我似乎无法为 Integer 列指定 DataGridViewColumn 类型。

如果我将 DataSet 设置为Data GridView 的 DataSource,然后将列添加到 DataGridView,则列存在,但不会绑定回不包含这些列的 DataSet。

如何使用正确的列类型将这两列绑定到 DataGridViewColumns?

4

1 回答 1

2

为此,您需要设置 to 的属性AutoGenerateColumns并将列自己添加到 the和. 列具有允许您设置绑定到底层的属性。DataGridViewfalseDataSetDataGridViewDataGridViewDataPropertyNameDataSource

您可以做的是将AutoGenerateColumns属性设置为 true,将 DataSet 添加为网格的 DataSource(从而获得大部分所需的列),然后关闭 AutoGenerateColumns 并将 Integer 和 Boolean 列添加到数据集和网格中。

下面是一些示例代码,与 DataTable 绑定:

DataTable dataTable = new DataTable();

DataColumn col1 = new DataColumn("Id",typeof(int));
col1.AutoIncrement = true;

DataColumn col2 = new DataColumn("Name",typeof(string));    
DataColumn col3 = new DataColumn("TimeStamp",typeof(DateTime));

dataTable.Columns.AddRange(new DataColumn[] { col1, col2, col3 }); 

dataTable.Rows.Add(null,"John",DateTime.Now);    
dataTable.Rows.Add(null,"Jane",DateTime.Now);         

BindingSource source = new BindingSource();
source.DataSource = dataTable;
dataGridView1.DataSource = source;

dataGridView1.AutoGenerateColumns = false;

DataColumn col4 = new DataColumn("CheckCol", typeof(bool));
dataTable.Columns.Add(col4);

DataGridViewCheckBoxColumn dgvcol1 = new DataGridViewCheckBoxColumn();
dgvcol1.DataPropertyName = "CheckCol";
dgvcol1.Name = "Select";

dataGridView1.Columns.Add(dgvcol1);

我还没有实现 NumericUpDown 列类型,但它应该与显示的复选框列类型一样工作。

于 2011-06-17T11:11:37.333 回答