这里我们datagridview的datasourse已经绑定到了一个datatable,
datatable来自于mysql或者excel表 这两种来源都是不会自带是否选择此列的字段的,因为是否选择是运行时的状态而非数据本身应该记录的
那么如果在datagridview里面显示一个可以选择的列 我们就会用到这个复选框
因为性能的需要我们会用到虚拟模式,但是进入虚拟模式后的datagridview如果是在其开头的第一列插入一个复选框列,是无法保持选中的,更不能多选,一旦失去焦点以后就会丢掉了选择状态.但是在非虚拟模式的情况下就可以保持选中
原因在于虚拟模式下显示依靠数据来源,我们新增的一列并没有绑定数据.
但是如何绑定这样复选框的数据呢,我们读出来的datatable并没有是否选择的这一列 所以我们要添加一个列,用于记录复选状态的值
showTradesTable.Columns.Add("Checked",typeof(bool));
showTradesTable.Columns["Checked"].SetOrdinal(0);
这样这个复选框列就放在了datagridview的第一位了(已绑定的情况下)
这里要注意的是 .Columns.Add("Checked",typeof(bool)); 第二参数必须要填写,这样的话系统默认的会把datagridview的第一列设置成复选框列,如果不写的话默认就是一个文本框列,而且更改起来非常的麻烦.我之间就是因为忘记设置这个参数煎熬好久.
然后下面一行的setordinal方法很有用.他可以很方便的让你的复选框位居任何位置