Grayson.Shang 发表于 2024-7-17 17:59:45

admin/ 发表于 2024-7-17 17:40
尚工,这个只禁止了表格内的编辑,还可以删除表格行。
哪个函数可以再增加这个限制

表格这个“显示删除按钮”这个功能,暂时不知道如何可以限制。:'(
如果咱们有这样的需求,建议咱们不要开启这个功能,而是给表格增加一个删除列,使用超链接删除当前行,然后在超链接中增加条件判断,条件判断和允许编辑的条件一致即可。

admin/ 发表于 2024-7-29 15:34:55

本帖最后由 admin/ 于 2024-7-29 15:56 编辑

Grayson.Shang 发表于 2024-7-17 17:59
表格这个“显示删除按钮”这个功能,暂时不知道如何可以限制。
如果咱们有这样的需求,建议咱们不要 ...
尚工,当时只测试了历史静态数据,是正常的
但是表格内的行是新增加一条后,新的表格行内进行编辑就会失败,报错行索引参数 `rowIndex` 超出范围

Grayson.Shang 发表于 2024-7-29 18:57:04

大佬您好,是这样子的,使用这个JS在设置表格的列是否可以编辑的时候,是需要先从表格中获取对应判断列的值。而因为添加行的时候还没有真正完成添加,所以取对应列值的时候,新添加的数据还没有更新到表格中,所以获取失败了。

咱们在设置单元格是否可以编辑的时候,判定一下修改的行是否是新增行,若是新增行不做修改即可。


// 定义编辑触发事件,
activeSheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
    var colx;

    let count = listView.getRowCount();
    if (args.row < count) {
      // getValue,是按照表格单元格展示的,从0开始,若存在表头,也会被计算,
      colx = listView.getValue(args.row, reg);

      // 设置当前行,第noEidt列,当第colx的值等于0的时候,编辑取消
      // args.col,是按照数据的顺序展示的,从0开始,表头不计入
      // 若有多列不可以编辑,可以将下面的条件代码重复即可
      if (args.col == noEdit && colx == 0) {
            args.cancel = true;
            return;
      }
    }

   
   
});

admin/ 发表于 2024-7-30 08:38:23

本帖最后由 admin/ 于 2024-7-30 09:11 编辑

Grayson.Shang 发表于 2024-7-29 18:57
大佬您好,是这样子的,使用这个JS在设置表格的列是否可以编辑的时候,是需要先从表格中获取对应判断列的值 ...
先获取了加载时的行数,只让对行数内的数据做处理了是吗?
但是我试了下,控制台没有报警了,新增行的话一旦进行编辑了某一列,整行都无法编辑了

Grayson.Shang 发表于 2024-7-30 09:33:32

本帖最后由 Grayson.Shang 于 2024-7-30 14:31 编辑

大佬您好,这种方式下,这段JS只会修改非新增行,若是新增行的话,还是会和表格设置的一样,若是表格允许新增行,那么就可以正常编辑,若是新增行,则不会触发这段JS,咱们要不检查一下咱们的表格设置。



问题跟进:因为楼主在JS中同时控制多列的编辑,在设置不可编辑时,需要去掉return
页: 1 [2]
查看完整版本: 表格内,如何控制某一行不可编辑