要做到这一点,你需要将DataGridView
的AutoGenerateColumns
属性设置为false
,自己在列添加到DataSet
和DataGridView
两者。 DataGridView
列有DataPropertyName
属性,它允许您设置绑定到基础DataSource
。
你可以做的是有AutoGenerateColumns
属性设置为true,添加数据集作为数据源的网格(因而得到了大多数你需要的列),然后打开的AutoGenerateColumns关闭,并添加整数和布尔列到数据集和网格。
下面是一些示例代码,针对一个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列类型,但它应该工作得一样显示的复选框列类型。