找回密码
 立即注册

QQ登录

只需一步,快速开始

xjsxjs197
论坛元老   /  发表于:2014-7-18 14:45  /   查看:7604  /  回复:9


如图,当前Grid一行有多列是CheckBox,如果选中一行,点击其中一个CheckBox,那么其他列的CheckBox也同时被Check上了,这是Grid的一个特殊处理吗?
有没有办法不让选中行的CheckBox同时被check?

谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

9 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-7-18 17:06:00
沙发
回复 1楼xjsxjs197的帖子

1.C1FlexGrid默认只会Check/UnCheck你选择的单元格,除非你自己设置代码处理。我本机测试没有出现你提到的问题。我的测试代码如下:
  1. this.c1FlexGrid1.Cols.Count = 7;
  2.             this.c1FlexGrid1.Rows.Count = 10;
  3.             this.c1FlexGrid1.Cols[1].DataType = typeof(bool);
  4.             this.c1FlexGrid1.Cols[2].DataType = typeof(bool);
  5.             this.c1FlexGrid1.SelectionMode = SelectionModeEnum.Row;
复制代码

运行状态下,选择那个单元格,当前单元格才会被Check/Unchecked.
2.FlexGrid有CellChecked事件,当Cell被Check/UnCheck的时候会触发。你可以调用这个事件去处理当checkbox类型的单元格被单击时候的状态。
C1FlexGrid.SetCellCheck方法可以设置CheckBox单元格的状态。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
xjsxjs197
论坛元老   /  发表于:2014-7-18 17:36:00
板凳
不要设置SelectionMode = SelectionModeEnum.Row,就一个最简单的Grid,设置两个Bool列,
然后使用鼠标拖动选中一行,再点击checkbox,就会出现图片的现象。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-18 18:21:00
地板
回复 3楼xjsxjs197的帖子

选中一片CellRange,单击任何一个CheckBox,该Range中所有的CheckBox都会被Check。
这个操作可以用代码实现: 获取C1FlexGrid.Selection, 就可以使用CheckBox属性设置Range中所有CheckBox状态。
代码参考:
  1. CellRange range = this.c1FlexGrid1.Selection;
  2.             range.Checkbox = CheckEnum.Unchecked;
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
xjsxjs197
论坛元老   /  发表于:2014-7-19 08:50:00
5#
呵呵,其实我的问题是:选中了区域,点击一个CheckBox,其他checkBox不能同时选中,不知道有没有办法?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-21 09:15:00
6#
回复 5楼xjsxjs197的帖子

这个应该可以写代码实现。
在MouseClick事件里,判断是不是Click到CheckBox类型的单元格。如果是通过C1FlexGrid.Seletion.CheckBox将所有的CheckBox状态设置为不选择,然后获取C1FlexGird.MouseRow和C1FlexGrid.MouseCol,通过SetCheckBox方法只设置鼠标点击的单元格的CheckBox。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
xjsxjs197
论坛元老   /  发表于:2014-7-21 13:56:00
7#
可能是我问题没说清楚,现在现象是我只想Check一个checkBox,但是在Grid范围选中的情况下,Grid自动把所有checkBox都勾上或取消了。
首先:这是Grid的一个内部的特殊处理,或者说是一个bug吗?
另外,上面给出的方案,没有办法获得点击前的各个CheckBox状态,因为可能有4个CheckBox,1、3是Check上的,2、4是非Check的,不能因为再次点击了1,3也变成非Check状态。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-22 14:54:00
8#
回复 7楼xjsxjs197的帖子

目前C1FlexGrid就是这样设计的。
你说的操作需要写代码判断。
C1FlexGrid有CellChecked事件,这个事件可以得到是选择范围中的哪个checkBox触发式check还是uncheck,保持checkBox状态不变就可以。然后用C1FlexGrid.MouseRow/MouseCol设置当前单击的Cell。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
xjsxjs197
论坛元老   /  发表于:2014-7-23 07:58:00
9#
好的,了解了。
非常感谢!
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-23 15:58:00
10#
回复 9楼xjsxjs197的帖子

不客气
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部