找回密码
 立即注册

QQ登录

只需一步,快速开始

atwlee

注册会员

1

主题

4

帖子

11

积分

注册会员

积分
11
  • 41

    金币

  • 1

    主题

  • 4

    帖子

最新发帖
atwlee
注册会员   /  发表于:2024-5-16 11:18  /   查看:2213  /  回复:6
3金币
本帖最后由 Richard.Huang 于 2024-5-29 11:58 编辑

产品:SpreadJS
版本:V15.2.5

场景:
右键菜单的内容根据选择的行数据决定

操作步骤:
1、默认无查询内容,渲染菜单内容--查询0
image.png157376097.png

2、右键点击第N行数据,发起请求,响应菜单内容为查询1,但渲染结果为查询0
image.png846520995.png

3、右键点击第M行数据,发起请求,响应菜单内容为查询2,但渲染结果为查询1
image.png266593932.png

期望结果:
正常渲染
伪代码:
  1. // 默认菜单
  2. const [rightBtn, setRightBtn] = useState([{
  3.     id: '0',
  4.     text: '查询0',
  5. }]);

  6. /**
  7. * @description:  点击行的回调函数
  8. * @param {string} rowData
  9. * @param {*} columnName
  10. * @param {number} rowNumber 第N行
  11. * @return {*}
  12. */
  13. const getMenuData = async (rowData: string[], columnName: [string[]], rowNumber: number) => {
  14. // 模拟请求
  15. await new Promise<void>((resolve, reject) => {
  16.     setTimeout(() => {
  17.       if (rowNumber === 4)
  18.         setRightBtn([
  19.           {
  20.             id: '1',
  21.             text: '查询1',
  22.           },
  23.         ]);
  24.       if (rowNumber === 5)
  25.         setRightBtn([
  26.           {
  27.             id: '2',
  28.             text: '查询2',
  29.           },
  30.         ]);
  31.     }, 10);
  32.   });
  33. }

  34. <Excel
  35.    rightBtn={rightBtn}
  36.   getMenuData={getMenuData}
  37. />
复制代码


原因分析:
异步问题,数据未update,菜单已弹出,且dom不在更新
image.png653614806.png

最佳答案

查看完整内容

您好,这个API还是基于SpreadJS原生的右键菜单,无法实现您的需求。 我上文中提到的自定义的意思是完全禁用SpreadJS原生的右键菜单,然后您自行设计右键菜单来实现您异步的需求。

6 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-17 09:00:13
7#
不客气,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
atwlee
注册会员   /  发表于:2024-5-17 08:52:48
6#
Joestar.Xu 发表于 2024-5-16 17:35
您好,这个API还是基于SpreadJS原生的右键菜单,无法实现您的需求。

我上文中提到的自定义的意思是完全 ...

好的,感谢
回复 使用道具 举报
atwlee
注册会员   /  发表于:2024-5-16 14:19:58
4#
atwlee 发表于 2024-5-16 14:13
您说的自定义菜单是这个api吗https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheet ...

我试了试,也还是不行。问题的原因是当我右键后菜单已经弹出来了,这时候对于菜单的任何操作都不会引起他的改变了,除非关闭后再次打开。
回复 使用道具 举报
atwlee
注册会员   /  发表于:2024-5-16 14:13:09
3#
Joestar.Xu 发表于 2024-5-16 13:37
您好,SpreadJS原生的右键菜单不支持这样的异步操作,您可以替换SpreadJS原生的菜单,使用第三方或自定义的 ...

您说的自定义菜单是这个api吗https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.ContextMenu.MenuView
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-16 13:37:31
2#
您好,SpreadJS原生的右键菜单不支持这样的异步操作,您可以替换SpreadJS原生的菜单,使用第三方或自定义的菜单来实现您的需求。
回复 使用道具 举报
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-16 11:18:38
来自 5#
您好,这个API还是基于SpreadJS原生的右键菜单,无法实现您的需求。

我上文中提到的自定义的意思是完全禁用SpreadJS原生的右键菜单,然后您自行设计右键菜单来实现您异步的需求。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部