相信使用过公式的小伙伴应该对下图不陌生,双击进入有公式的单元格编辑状态会高亮引用的单元格。有小伙伴想通过单击单元格,高亮显示对应的引用信息,应该怎么实现呢?
我们可以通过CellClick事件监听单元格的单击事件,然后在单元格中通过getPrecedents判断单元格是否有公式引用的单元格,如果有,通过setBorder设置对应的边框。实现效果如下:
那么我们来看代码吧!首先我们添加一个公式和一些数值。然后,初始化一个颜色的数组,对应的颜色可以根据自己的喜好添加或者自己去测应用不同数量单元格的颜色。
- var color = ["#0055FF","#008000","#B300CC","#800000","#00CC33"]
复制代码
接下来就是监听CellClick事件,在事件里面我们通过getPrecedents判断是否有数值,有则遍历数组的长度去设置边框,边框的颜色用的就是我们前面预设好的颜色数组。当我们点击其他单元格的时候我们需要将表单前面显示的边框清除,也就是将边框的样式设置为empty,这样就大功告成了。
- sheet.bind(GC.Spread.Sheets.Events.CellClick, function (sender, args) {
- var childNodes = sheet.getPrecedents(args.row, args.col);
- if(childNodes.length > 0){
- spread.suspendPaint();
- for(var i = 0; i < childNodes.length; i ++ ){
- sheet.getRange(childNodes[i].row, childNodes[i].col, childNodes[i].rowCount, childNodes[i].colCount, GC.Spread.Sheets.SheetArea.viewport).setBorder(new GC.Spread.Sheets.LineBorder(color[i],GC.Spread.Sheets.LineStyle.medium), { all:true });
- }
- spread.resumePaint();
- } else {
- spread.suspendPaint();
- sheet.getRange(0, 0, sheet.getRowCount(), sheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport).setBorder(new GC.Spread.Sheets.LineBorder(GC.Spread.Sheets.LineStyle.empty), { all:true });
- spread.resumePaint();
- }
- });
复制代码
当然,这只是一个简单的示例demo,可能没有涵盖一些复杂的情况,大家可以根据自己的需求做调整。
最后,下载附件即可查看完整代码。
|
|