找回密码
 立即注册

QQ登录

只需一步,快速开始

jerrychen3168
金牌服务用户   /  发表于:2024-12-5 21:17  /   查看:112  /  回复:5
1金币
本帖最后由 Wilson.Zhang 于 2024-12-9 08:47 编辑

你好,

如何禁止複制Sheet內的資料.

無法使用Copy及Ctrl C,但可從外部複制資料貼上Sheet. (僅禁止在Sheet中Copy)
image.png375751342.png

5 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-12-6 09:08:27
沙发
您好!如果僅需要禁用右鍵菜單中的Copy菜單選項,可以通過重寫onOpenMenu方法將該選項對應對象的disable屬性設置爲true,即可令其灰顯表示無法使用。
可以參考如下博客瞭解詳情:
https://gcdn.grapecity.com.cn/showtopic-229168-1-2.html

根據您提供的描述信息,是需要禁止一切能在sheet上有效複製内容的操作。那麽,可以監聽ClipboardChanging事件,該事件在複製内容時被觸發,在事件處理函數中設置args.cancel為true即可攔截複製。可以參考如下代碼:
  1. sheet.bind(GC.Spread.Sheets.Events.ClipboardChanging, function(e, args) {
  2.     console.log('clipboard changing, args: ', args);
  3.     args.cancel = true;
  4. });
复制代码
回复 使用道具 举报
jerrychen3168
金牌服务用户   /  发表于:2024-12-8 21:43:13
板凳
Wilson.Zhang 发表于 2024-12-6 09:08
您好!如果僅需要禁用右鍵菜單中的Copy菜單選項,可以通過重寫onOpenMenu方法將該選項對應對象的disable屬 ...

請問,加入了如下Code,确实無法複制,但貼上时出現''clipboard changing, args: ', args',这一串字符是否能自己定义,如改成'複制功能已停用'

sheet.bind(GC.Spread.Sheets.Events.ClipboardChanging, function (e, args) {
                            //console.log('clipboard changing, args: ', args);
                            //alert('clipboard changing, args: xxxx', args);
                            args.cancel = true;
                        });
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-9 08:47:27
地板
jerrychen3168 发表于 2024-12-8 21:43
請問,加入了如下Code,确实無法複制,但貼上时出現''clipboard changing, args: ', args',这一串字符是否能 ...

當然可以,我提供給您的代碼片段中包含的console.log()語句是爲了輔助您瞭解ClipboardPasting的出發時機及其作用。不僅可以修改這句代碼的輸出内容,您也可以在ClipboardPasting事件中攔截複製后彈出彈框提示如”複製功能已停用“這樣的提示信息。
回复 使用道具 举报
jerrychen3168
金牌服务用户   /  发表于:2024-12-9 17:07:09
5#
Wilson.Zhang 发表于 2024-12-9 08:47
當然可以,我提供給您的代碼片段中包含的console.log()語句是爲了輔助您瞭解ClipboardPasting的出發時機 ...

你好,
了解,雖然有攔掉到console.log()這事件,但我有發現按CTRL+V會出現'clipboard changing,args....'這字串,能否按CTRL+V是出現自己自定义的定符呢?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-9 17:40:00
6#
jerrychen3168 发表于 2024-12-9 17:07
你好,
了解,雖然有攔掉到console.log()這事件,但我有發現按CTRL+V會出現'clipboard changing,args....' ...

您好!與ctrl+c事件中的console.log()打印語句相似,ctrl+v粘貼動作可以觸發SpreadJS内置的ClipboardPasting和ClipboardPasted事件,您可以排查下在您的代碼中是否有監聽ClipbpardPasting或ClipboardPasted事件,如果有則按照對ClipboardChanging事件相似的處理方式自定義提示信息即可。

一般情況下,SpreadJS默認并未綁定任何事件,這些事件支持用戶在需要時選擇綁定以輔助解決某些業務需求。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部