Events

SpreadJS provides events for comments on the sheet to let you react to events that have happened.

The CommentChanged event occurs when the comment has changed (such as some properties have changed).
<template> <div class="sample-tutorial"> <gc-spread-sheets class="sample-spreadsheets" @workbookInitialized="initSpread"> <gc-worksheet></gc-worksheet> <gc-worksheet /> </gc-spread-sheets> <div class="options-container"> <textarea id="commentEvent" style="width: 100%; height: 90px" v-model="commentEventMessage"></textarea> </div> </div> </template> <script setup> import '@mescius/spread-sheets-vue'; import GC from '@mescius/spread-sheets'; import { ref } from "vue"; const spreadRef = ref(null); const commentEventMessage = ref(""); function initSpread(spread) { spreadRef.value = spread; let GCsheets = GC.Spread.Sheets; spread.suspendPaint(); let sheet = spread.getActiveSheet(); sheet.comments.add(1, 1, "new comment!"); sheet.setText(1, 1, "Comment"); sheet.bind(GCsheets.Events.CommentChanged, function (e, args) { let text = commentEventMessage.value; if (text !== "") { text += "\n"; } commentEventMessage.value = text + "CommentChanged: " + " " + args.propertyName; }); // get comment and change some properties to fire event let comment = sheet.comments.get(1, 1); comment.text( "Edit the comment, do resize, drag or other actions to fire the CommentChanged event." ); comment.backColor("white"); comment.foreColor("#82BC00"); comment.displayMode(GCsheets.Comments.DisplayMode.alwaysShown); spread.resumePaint(); } </script> <style scoped> #app { height: 100%; } .sample-tutorial { position: relative; height: 100%; overflow: hidden; } .sample-spreadsheets { width: calc(100% - 280px); height: 100%; overflow: hidden; float: left; } .options-container { float: right; width: 280px; overflow: auto; padding: 12px; height: 100%; box-sizing: border-box; background: #fbfbfb; } textarea { width: 100%; height: 80px; padding: 6px 12px; box-sizing: border-box; } .sample-options { z-index: 1000; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } </style>
<!DOCTYPE html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>SpreadJS VUE</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/vue3/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/en/vue3/node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script src="compiler.js" type="module"></script> <script> var System = SystemJS; System.import("./src/app.js"); System.import('$DEMOROOT$/en/lib/vue3/license.js'); </script> </head> <body> <div id="app"></div> </body> </html>
(function (global) { SystemJS.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, packageConfigPaths: [ './node_modules/*/package.json', "./node_modules/@mescius/*/package.json", "./node_modules/@babel/*/package.json", "./node_modules/@vue/*/package.json" ], map: { 'vue': "npm:vue/dist/vue.esm-browser.js", 'tiny-emitter': 'npm:tiny-emitter/index.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', "systemjs-babel-build": "npm:systemjs-plugin-babel/systemjs-babel-browser.js", '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-vue': 'npm:@mescius/spread-sheets-vue/index.js', }, meta: { '*.css': { loader: 'systemjs-plugin-css' }, '*.vue': { loader: "../plugin-vue/index.js" } } }); })(this);