背景:
客户使用组件版设计器,打开模板通过拖拽字段来设置模板。
需求是一个字段在表单中只能绑定一个单元格,在绑定第二个单元格时会提示禁止拖拽绑定。
思路:
通过重写 GC.Spread.Sheets.CellRange.prototype.bindingPath 来修改绑定字段逻辑。
代码:
- var oldSetBindingPath = GC.Spread.Sheets.CellRange.prototype.bindingPath;
- GC.Spread.Sheets.CellRange.prototype.bindingPath = function(a) {
- var sheet = this.sheet;
- var rc = sheet.getRowCount();
- var cc = sheet.getColumnCount();
- // 遍历单元格,查看是否该字段已设置。如果是,则弹出弹窗提示,并取消绑定该字段
- for(var r = 0; r < rc; r++) {
- for(var c = 0; c < cc; c++) {
- var path = sheet.getBindingPath(r, c);
- if(path == a) {
- alert("该字段已绑定!请勿拖拽");
- return;
- }
- }
- }
- oldSetBindingPath.call(this, a)
- }
复制代码
实现效果如下图:
完整代码请参考附件demo。
|
|