找回密码
 立即注册

QQ登录

只需一步,快速开始

老皮

注册会员

10

主题

35

帖子

168

积分

注册会员

积分
168
老皮
注册会员   /  发表于:2020-10-26 15:08  /   查看:2649  /  回复:5
在网上看了一些帖子,给出的方案是在BeforeEdit事件中去给C1.Win.C1FlexGrid.RowColEventArgs对象的Cancel属性赋值,但是我现在遇到的业务是通过编辑列表中的某一个单元格的值,根据这个值控制当前行其他单元格的不可编辑,这个如何处理,请教各位大神,谢谢了

5 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-26 15:29:10
沙发
我理解你的需求,下面的代码应该类似于你需要的

通过第一列的值控制相同行的第二列是否可以编辑
如果某行的第一列大于10,则该行的第二列单元格不可编辑,如果是其他的逻辑,也可以按照这种模式,改写条件

  1.         private void C1FlexGrid1_BeforeEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
  2.         {
  3.             if (e.Col == 2)
  4.             {
  5.                 if ((c1FlexGrid1[e.Row, 1] != null)&&(int)c1FlexGrid1[e.Row, 1] > 10)
  6.                 {
  7.                     e.Cancel = true;
  8.                 }
  9.             }
  10.         }
复制代码
回复 使用道具 举报
老皮
注册会员   /  发表于:2020-10-27 09:56:28
板凳
Richard.Ma 发表于 2020-10-26 15:29
我理解你的需求,下面的代码应该类似于你需要的

通过第一列的值控制相同行的第二列是否可以编辑

不好意思,我还是没明白,我也试验了一下,就是说当你修改当前行的第一列的时候,RowColEventArgs对象携带的col和row不都是你刚才编辑的单元格的行和列嘛,col永远都是1啊
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-27 10:49:03
地板
如下图,你可以看到发给你的代码中,验证的是第一列的单元格,以此判断第二列的单元格能否编辑,(第一列数据类型是数字)

本帖子中包含更多资源

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

x
回复 使用道具 举报
老皮
注册会员   /  发表于:2020-10-27 12:02:23
5#
Richard.Ma 发表于 2020-10-27 10:49
如下图,你可以看到发给你的代码中,验证的是第一列的单元格,以此判断第二列的单元格能否编辑,(第一列数 ...

我明白你的意思了,是当选择第二列的时候再去进行判断第一列值是不是大于10,如果大于10不让编辑,我之前想复杂了,我以为是编辑完第一列之后直接接可以控制第二列不可编辑
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-27 12:04:48
6#
嗯,BeforeEdit因为是在编辑前触发,因此可以通过Cancel属性控制是否可以编辑
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部