我对您的要点的看法:
可编辑/不可编辑的列
这就像在列定义中定义editor 一样简单。
var columns = [
{ id: 'Editable', field: 'EditableData', editor: Slick.Editors.Text },
{ id: 'NonEditable', field: 'NonEditableData' }
];
编辑器相当easy to create,创建复合编辑器的能力提供了极大的灵活性。
如果您需要应用更多业务逻辑来使列中的单个单元格不可编辑或可编辑,您有两种选择:
批量复制粘贴
There is an example 了解如何使用Slick.CellCopyManager 处理网格本身内的复制粘贴。
可以通过plugin that you mentioned从外部电子表格复制粘贴。
列公式
可以创建Slick.Plugin 以将定义的公式从两个操作数列计算到一个结果列中。处理grid.onCellChange 事件似乎对此最有效。基本结构如下所示:
function ColumnFormula(args) {
this.operands = args.operandColumns;
this.result = args.resultColumns;
this.formula = args.formula;
}
ColumnFormula.prototype.init = function (grid) {
this.grid = grid;
this.grid.onCellChange.subscribe(this.handleChange.bind(this));
};
ColumnFormula.prototype.handleChange = function (args) {
if (/* change happened for an operand column */) {
var dataItem = this.grid.getData().getItems()[args.row];
// apply a formula to the operand fields in the dataItem
dataItem[this.resultColumn] = this.formula(this.operands, dataItem);
this.grid.updateRow(args.row);
}
};
ColumnFormula.Sum = function (operands, dataItem) {
return dataItem[operands[0]] + dataItem[operands[1]];
};
// ...
var myColumnFormula = new ColumnFormula({
operandColumns: ['OperandOne', 'OperandTwo'],
resultColumn: 'ResultColumn',
formula: ColumnFormula.Sum
});
grid.registerPlugin(myColumnFormula);