找回密码
 立即注册

QQ登录

只需一步,快速开始

老赵头

注册会员

2

主题

7

帖子

25

积分

注册会员

积分
25
  • 89

    金币

  • 2

    主题

  • 7

    帖子

最新发帖
老赵头
注册会员   /  发表于:2024-10-25 15:18  /   查看:214  /  回复:9
1金币
本帖最后由 老赵头 于 2024-10-25 17:18 编辑

自定义行操作Check,option对象内iconSelector(item: any, index)方法内[item.Id]为undefined,导致勾选状态无法写入。


请查看93行和123行的打印值

  1. const initSpread = function (spread) {
  2.     spreadEntity = spread;
  3.     spread.suspendPaint();
  4.     spread.clearSheets();
  5.     spread.options.autoFitType = GC.Spread.Sheets.AutoFitType.cellWithHeader; // 列宽自适应

  6.     // init a data manager
  7.     const dataManager = spread.dataManager();
  8.     spread.options.allowDynamicArray = true; // 是否启用动态数组
  9.     const myTable = dataManager.addTable('myTable', {
  10.       batch: false,
  11.       autoSync: false,
  12.       data:  [
  13.     {
  14.       empNo: 'DE001',
  15.       Id: 1,
  16.       stringType: 'Jone',
  17.       numberType: 90.012,
  18.       currencyType: 8.5,
  19.       urlLink: 'http://www.baidu.com',
  20.       phone: '(123)555-0100',
  21.       selectType: 1,
  22.       dateType: '2019-07-04',
  23.       credit: '30,25',
  24.       createTimeType: null,
  25.       isFinished: 'Yes',
  26.       isEncouraged: 'True',
  27.       checkboxType: true,
  28.       buttonList: undefined,
  29.       radioButtonList: 0,
  30.     },
  31.     {
  32.       empNo: 'DE002',
  33.       Id: 2,
  34.       stringType: 'Tom',
  35.       numberType: 90.012,
  36.       currencyType: 8.5,
  37.       urlLink: 'http://www.baidu.com',
  38.       phone: '(123)555-0101',
  39.       selectType: 2,
  40.       dateType: '2019-07-04',
  41.       credit: '30,25',
  42.       createTimeType: null,
  43.       isFinished: 'Yes',
  44.       isEncouraged: 'True',
  45.       checkboxType: false,
  46.       checkboxTypeButton: false,
  47.     },
  48.     {
  49.       empNo: 'DE003',
  50.       Id: 3,
  51.       stringType: 'Kotas',
  52.       numberType: 90.012,
  53.       currencyType: 8.5,
  54.       urlLink: 'http://www.baidu.com',
  55.       phone: '(123)555-0101',
  56.       selectType: 1,
  57.       dateType: '2019-07-04',
  58.       credit: '30,25',
  59.       createTimeType: null,
  60.       isFinished: 'No',
  61.       isEncouraged: 'False',
  62.       checkboxType: true,
  63.       checkboxTypeButton: true,
  64.     }
  65. ],
  66.       schema: {},
  67.     });

  68.     // init a table sheet
  69.     const sheet = spread.addSheetTab(
  70.       0,
  71.       config.sheetName || 'Sheet1',
  72.       GC.Spread.Sheets.SheetType.tableSheet,
  73.     );

  74.     // actions
  75.     const rowActions = GC.Spread.Sheets.TableSheet.BuiltInRowActions;
  76.     const options = sheet.rowActionOptions();
  77.     if (config.allowDelete) {
  78.       options.push(rowActions.removeRow);
  79.     }
  80.     if (config.allowChecked) {
  81.       options.push({
  82.         name: 'check',
  83.         icons: [
  84.           'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ0cmFuc3BhcmVudCIvPgo8cmVjdCB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9InRyYW5zcGFyZW50Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTIgMEgwVjEySDEyVjBaTTEgMTFWMUgxMVYxMUgxWiIgZmlsbD0iIzY2NjY2NiIvPgo8L3N2Zz4K',
  85.           'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ0cmFuc3BhcmVudCIvPgo8cmVjdCB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9InRyYW5zcGFyZW50Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTIgMEgwVjEySDEyVjBaTTEgMTFWMUgxMVYxMUgxWiIgZmlsbD0iIzY2NjY2NiIvPgo8cGF0aCBkPSJNNS4yNSA5TDIgNS42MTI5TDMuMDA3MTQgNC41NjMyOEw1LjI1IDYuODkzM0w4Ljk4NTcxIDNMMTAgNC4wNDk2M0w1LjI1IDlINS4yNVoiIGZpbGw9IiM2NjY2NjYiLz4KPC9zdmc+Cg==',
  86.         ],
  87.         tooltip: 'Check/Uncheck',
  88.         iconSelector(item, index) {

  89.           console.log('item:', item, 'item.Id:', item.Id); // item: {YTi: currentIndex} item.Id:undefined

  90.           return !!checkMap[item.Id];
  91.         },
  92.         command: CheckRow,
  93.       });
  94.     }

  95.     sheet.rowActionOptions(options);

  96.     // bind a view to the table sheet
  97.     myTable.fetch().then(function () {
  98.       const view = myTable.addView('myView', tableViewTransfer(config.columns));
  99.       sheet.setDataView(view);
  100.     });

  101.     spread.resumePaint();
  102.   };



  103. ......


  104.   const registerCommands = () => {
  105.     const { Commands } = GC.Spread.Sheets;
  106.     Commands[CheckRow] = {
  107.       canUndo: false,
  108.       execute(context, options) {
  109.         const id = options.item.Id;
  110.         console.log('options.item.Id:', options.item.Id); // options.item.Id: 1、2、3
  111.         checkMap[id] = !checkMap[id];

  112.         return true;
  113.       },
  114.     };
  115.   };
复制代码






9 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-28 10:29:10
沙发
您好,需要和您明确一下,您目前想要实现的效果是什么样子的?

另外,我尝试在本地运行您的代码,但是发现您提供的代码中没有关于config的定义。
回复 使用道具 举报
老赵头
注册会员   /  发表于:2024-10-29 11:19:01
板凳
本帖最后由 老赵头 于 2024-10-29 11:41 编辑
Joestar.Xu 发表于 2024-10-28 10:29
您好,需要和您明确一下,您目前想要实现的效果是什么样子的?

另外,我尝试在本地运行您的代码,但是发 ...

想要实现的效果是可自定义操作实现行数据的勾选与反选,并实时变量保存已勾选的完整行数待批量操作。基于https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/table-sheet/row-action/custom/react 实现。

完整代码已上传,请替换LicenseKey后运行。


TableSheet.zip

6.58 KB, 下载次数: 4

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-29 17:30:03
地板
您提供的Demo无法直接运行,我将其中部分代码整合到之前的代码中后测试了一下,没有发现明显的问题,勾选功能什么的都是正常的。


如果你希望在删除了行以后checkMap和checkedList中的对应行也删除,需要您重写rowActions.removeRow的逻辑来实现。

code.txt

8.04 KB, 下载次数: 2

回复 使用道具 举报
老赵头
注册会员   /  发表于:2024-10-30 10:06:55
5#
本帖最后由 老赵头 于 2024-10-30 10:10 编辑
Joestar.Xu 发表于 2024-10-29 17:30
您提供的Demo无法直接运行,我将其中部分代码整合到之前的代码中后测试了一下,没有发现明显的问题,勾选功 ...
我新建了个可本地运行的模板工程已上传,问题仍可复现:options对象内iconSelector(item: any, index)方法里打印[item.Id]为undefined,点击勾选框不能切换为选中状态。

“如果你希望在删除了行以后checkMap和checkedList中的对应行也删除,需要您重写rowActions.removeRow的逻辑来实现”  -- ok

my-app.zip

219.73 KB, 下载次数: 4

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-30 16:02:55
6#
您好,这个Demo我下载下来后运行发现有这个报错,可以请您确认一下吗?

image.png342064513.png
回复 使用道具 举报
老赵头
注册会员   /  发表于:2024-10-30 16:07:27
7#
Joestar.Xu 发表于 2024-10-30 16:02
您好,这个Demo我下载下来后运行发现有这个报错,可以请您确认一下吗?

要替换LicenseKey
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-30 16:53:23
8#
您好,我这边测试了一下,要实现选中的效果:

1、升级版本至17.1.7

2、将注册命令提前到initSpread最前面

请参考附件。

my-app.zip

378.63 KB, 下载次数: 4

回复 使用道具 举报
老赵头
注册会员   /  发表于:2024-10-30 16:54:57
9#
Joestar.Xu 发表于 2024-10-30 16:53
您好,我这边测试了一下,要实现选中的效果:

1、升级版本至17.1.7

您好,我们这边只购买了16版本的版权,请问16版本有什么方法实现吗?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-31 09:52:50
10#
您好,我这边在V16版本中测了一下,没有找到相关的方案实现,猜测是一个旧版本的Bug,只能通过升级来修复。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部