我想为我的 slickgrid 中的列编写一个自定义编辑器。理想情况下,此编辑器将包含另一个允许用户过滤和选择多个项目的 slickgrid。
- 有没有人尝试过编写一个包含另一个 slickgrid 实例的编辑器?
- 有什么我应该避免的问题吗?
我想为我的 slickgrid 中的列编写一个自定义编辑器。理想情况下,此编辑器将包含另一个允许用户过滤和选择多个项目的 slickgrid。
我们刚刚完成了这项工作,我们在 SlickGrid v1.4.3 中发现的问题是,您会遇到两个光滑网格的问题,因为它们共享 GlobalEditorLock 状态。换句话说,当您从弹出的光滑网格中选择一个项目时,它会在您在原始网格中设置的处理程序上触发提交事件。这就是问题所在。我们通过添加一个名为 disableEditorCommit 的新选项来解决这个问题,默认为 false 并在 handleClick 方法中更改源:
if (options.enableCellNavigation && !columns[cell].unselectable) {
// if this is a popup then do not commit edits to the global editor
if (options.disableEditorCommit) {
scrollRowIntoView(row,false);
setSelectedCellAndRow($cell[0], (row === defaultGetLength()) || options.autoEdit);
} else {
// commit current edit before proceeding
if (validated === true || (validated === null && options.editorLock.commitCurrentEdit())) {
scrollRowIntoView(row,false);
setSelectedCellAndRow($cell[0], (row === defaultGetLength()) || options.autoEdit);
}
}
}
在 handleDblClick 方法中:
validated = options.disableEditorCommit ? true : options.editorLock.commitCurrentEdit();
我们的弹出窗口 slickgrid 具有 disableEditorCommit = true ,因此它不会与我们在原始网格上设置的编辑器交互。