nutstore 发表于 2021-11-12 11:35:10

【14.2.2】【有什么方式可以监听 Sheet 的 options.isProtected 变化吗】

尝试了 SheetChanged,没效果。
你们对于 isProtected 的设置是会实时更新锁定效果的,所以应该是能感知到变化的,是不是有内部事件没开放出来,还是我用错事件了?

Derrick.Jiao 发表于 2021-11-12 14:22:26

你好,我这边跟我们研发同事确认了一下,目前是没有对应的事件可以监听表单保护的变化的。

nutstore 发表于 2021-11-12 14:49:31

Derrick.Jiao 发表于 2021-11-12 14:22
你好,我这边跟我们研发同事确认了一下,目前是没有对应的事件可以监听表单保护的变化的。
这个事件可以加一下吗,你们内部应该是能实现的,应该也已经实现了。如果加的话可以一步到位不,直接 SheetOptionChanged 之类的

Derrick.Jiao 发表于 2021-11-12 15:09:49

nutstore 发表于 2021-11-12 14:49
这个事件可以加一下吗,你们内部应该是能实现的,应该也已经实现了。如果加的话可以一步到位不,直接 She ...

请详细描述一下具体的应用场景,这边会将此作为需求提交调研。

nutstore 发表于 2021-11-12 16:24:37

Derrick.Jiao 发表于 2021-11-12 15:09
请详细描述一下具体的应用场景,这边会将此作为需求提交调研。

大概是这么个场景:

function useCellEditable(cell: CellRange): boolean {
const = useState<boolean>(
    () => cell.sheet.options.isProtected,
)
const = useState<boolean>(() => cell.locked())

useEffect(() => {
    const workbook = cell.sheet.getParent()
    if (!workbook) return

    const onCellChanged = (
      e: any,
      args: Spread.Sheets.ICellChangedEventArgs,
    ): void => {
      if (args.propertyName !== '') return

      const currentLocked = cell.locked()
      if (locked !== currentLocked) {
      setLocked(currentLocked)
      }
    }

    const onProtectChanged: EventListeners = ({
      sheetName,
      isProtected,
    }) => {
      if (cell.sheet.name() === sheetName) setIsProtected(isProtected)
    }

    cell.sheet.bind('CellChanged', onCellChanged)
    cell.sheet.bind('ProtectChanged', onProtectChanged)
    return () => {
      cell.sheet.unbind('CellChanged', onCellChanged)
      cell.sheet.unbind('ProtectChanged', onProtectChanged)
    }
}, )

return !(isProtected && locked)
}

Derrick.Jiao 发表于 2021-11-12 17:19:10

nutstore 发表于 2021-11-12 16:24
大概是这么个场景:

为了更加准确理解你的完整需求,请再加以文字描述为什么需要加上监听表单保护的事件。

nutstore 发表于 2021-11-12 17:24:07

Derrick.Jiao 发表于 2021-11-12 17:19
为了更加准确理解你的完整需求,请再加以文字描述为什么需要加上监听表单保护的事件。

因为 useCellEditable 中 editable 的计算要依赖 isProtected,而这个数据的变化目前无法直接侦听到

Derrick.Jiao 发表于 2021-11-12 17:45:45

nutstore 发表于 2021-11-12 17:24
因为 useCellEditable 中 editable 的计算要依赖 isProtected,而这个数据的变化目前无法直接侦听到

收到,这边已将此问题作为需求记录下来,待研发进一步调研是否在后续版本添加。
如果确认添加,会在本贴及时通知您。
(已将此问题移至 产品需求版块)
页: [1]
查看完整版本: 【14.2.2】【有什么方式可以监听 Sheet 的 options.isProtected 变化吗】