Winform DataGridView VirtualMode虚拟模式不能复选,勾选失去焦点后失效的问题

这里我们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方法很有用.他可以很方便的让你的复选框位居任何位置



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Afterwards_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值