找回密码
 立即注册

QQ登录

只需一步,快速开始

xiaolong

金牌服务用户

96

主题

376

帖子

1022

积分

金牌服务用户

积分
1022
xiaolong
金牌服务用户   /  发表于:2023-8-2 23:58  /   查看:2347  /  回复:12
1金币
要求:
      1  数据加载完之后除Active列之外其余列为不可编辑,颜色为灰色。
      2  Active选中的那一行除第1列跟最后3列不变外其余列为可编辑,颜色为白色。

      3  Active取消选中的过程中获取那一行的数据进行校验,校验不通过则不可取消选中。


求求帮忙出个方案吧,试了好多方法都满足不了全部需求
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

我在你的新帖中回复这个校验问题

12 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-2 23:58:25
来自 11#
我在你的新帖中回复这个校验问题
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-3 11:58:11
2#
demo跑起来没有任何内容?是空白的页面

从你描述的需求我有点不太明白,如果Active行,Active列指的就是当前选中激活的行列,那么本身你也只能在这个交叉的单元格上来编辑,禁用其他的没有什么意义

你可以留一下电话,电话沟通一下你的需求

回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2023-8-3 12:12:35
3#
Richard.Ma 发表于 2023-8-3 11:58
demo跑起来没有任何内容?是空白的页面

从你描述的需求我有点不太明白,如果Active行,Active列指的就是 ...

http://localhost:8091/#/setting/masterData

Active是input框
18235908998

本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-3 13:48:07
4#
isReadOnly只能控制行或者列,没法对某个单元格或区域设置只读。你可以试试beginningEdit事件来控制,除此之外想不到其他的办法了

https://demo.grapecity.com.cn/wijmo/demos/Grid/Events/Editing/vue
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2023-8-3 14:54:37
5#
Richard.Ma 发表于 2023-8-3 13:48
isReadOnly只能控制行或者列,没法对某个单元格或区域设置只读。你可以试试beginningEdit事件来控制,除此 ...

方便可以电话一下吗,我的号码在上面
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-3 18:21:10
6#
好的,我电话给你
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2023-8-3 20:05:49
7#
Richard.Ma 发表于 2023-8-3 18:21
好的,我电话给你

好的,我等您电话
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-4 09:55:17
8#
电话和你沟通后,确认你现在遇到的关键问题是无法在复选状态更改后,更新当前行样式,请参考下面的代码,在在线示例中加以修改即可

在overdue复选框状态改变后,会改变当前行2-4列的背景色和允许编辑状态

https://demo.grapecity.com.cn/wijmo/demos/Grid/Events/Editing/vue

  1.                 flexgrid.beginningEdit.addHandler((s, e) => {
  2.                     let col = s.columns[e.col];
  3.                     if (col.binding != "overdue"&&col.binding != "id") {
  4.                         let item = s.rows[e.row].dataItem;
  5.                         if (!item.overdue) {
  6.                             // prevent editing overdue items
  7.                             e.cancel = true;
  8.                             this.logText = "Overdue items cannot be edited";
  9.                         }
  10.                     }
  11.                 });
  12.                 flexgrid.cellEditEnding.addHandler((s, e) => {
  13.                     this.logText = "";
  14.                     let col = s.columns[e.col];
  15.                     let item = s.rows[e.row].dataItem;
  16.                     if (col.binding == "sales" || col.binding == "expenses") {
  17.                     }
  18.                 });
  19.                 flexgrid.formatItem.addHandler((s, e) => {
  20.                     if (e.panel == s.cells) {
  21.                         var col = s.columns[e.col], item = s.rows[e.row].dataItem;
  22.                         e.cell.style.backgroundColor="lightgray";
  23.                         if(col.binding != "overdue"&&col.binding != "id"){
  24.                             if(item.overdue){
  25.                                 e.cell.style.backgroundColor="lightgreen";
  26.                             }
  27.                         }
  28.                         else if(col.binding != "overdue"){

  29.                         }
  30.                         
  31.                     }
  32.                 });
复制代码



本帖子中包含更多资源

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

x
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2023-8-4 10:33:48
9#
Richard.Ma 发表于 2023-8-4 09:55
电话和你沟通后,确认你现在遇到的关键问题是无法在复选状态更改后,更新当前行样式,请参考下面的代码,在 ...

样式问题解决了,剩下在校验不通过的情况下怎么禁止复选框的状态改变了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部