【问题标题】:Excel like behavior with SlickGrid与 SlickGrid 类似的 Excel 行为
【发布时间】:2011-05-12 19:14:32
【问题描述】:

我想用 SlickGrid 模拟电子表格的特定行为。用户:

  1. 单击单元格将其激活
  2. 输入=sum(,或任何公式,
  3. 原始单元格地址已保存
  4. 用户选择单元格范围(我假设原来的单元格关闭了编辑器)
  5. 焦点返回到原始单元格,并附加了新的单元格范围。即 =sum(r1c1,r2c2)。

让我失望的是需要改变焦点。

var cell_with_formula = null;
grid = new Grid($("#myGrid"), data, columns, options);

// save original cell address, but there is no onBlur event
grid.onBlur = function(args){
  cell_with_formula = args; // save address
}; 

grid.onCellRangeSelected = function(){
  if(cell_with_formula){
    // check if cell_with_formula has `=` at begining
    // if so, append selected range    
    cell_with_formula = null;
  }
}; 

提前致谢!

【问题讨论】:

标签: javascript jquery jquery-plugins slickgrid


【解决方案1】:

这在 SlickGrid 1.4.x 中是不可能的,但将在目前仍在积极开发中的 2.0 版中得到支持。 Alpha 版托管在 GitHub 上的一个单独分支中 - https://github.com/mleibman/SlickGrid/tree/v2.0a,我刚刚通过示例检查了支持此功能的初步代码。请看https://github.com/mleibman/SlickGrid/commit/17b1bb8f3c43022ee6aec89dcab185cd368b8785

这是一个基本的公式编辑器实现:

函数公式编辑器(参数){ var _self = 这个; var _editor = new TextCellEditor(args); var _selector; $.extend(this, _editor); 函数初始化(){ // 注册一个插件来选择一个范围并将其附加到文本框 // 因为事件以相反的顺序触发(最近添加的首先执行), // 这将覆盖其他插件,如 moverows 或选择模型,并将 // 不要求网格不处于编辑模式 _selector = new Slick.CellRangeSelector(); _selector.onCellRangeSelected.subscribe(_self.handleCellRangeSelected); args.grid.registerPlugin(_selector); } this.destroy = 函数() { _selector.onCellRangeSelected.unsubscribe(_self.handleCellRangeSelected); grid.unregisterPlugin(_selector); _editor.destroy(); }; this.handleCellRangeSelected = 函数(e,args){ _editor.setValue(_editor.getValue() + args.range); }; 在里面(); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多