我在一个对象中有两个slickGrid:
instances: {
registered: {
selector: '##one',
slickGrid: null
},
registeredPending: {
selector: '##two',
slickGrid: null
}
}
这两个都填充有从AJAX请求获得的数据,并创建了网格:
success: function(ajaxData) {
var data = [];
// ... parse ajaxData to data
//instance is either instances.registered or instances.registeredPending
instance.slickGrid = new Slick.Grid(instance.selector, data, grid.columns, grid.options);
instance.slickGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow: false}));
instance.slickGrid.registerPlugin(checkboxSelector) //Add checkbox plugin
instance.slickGrid.onSelectedRowsChanged.subscribe(function(e, data){
//data.grid is last created slickGrid instance, instead of slickGrid of selected rows
//It seems data.rows are the selected rows of the right slickGrid table!
}
}
一切正常,只有对onSelectedRowsChanged事件的订阅无法正常运行。该事件确实响应良好,但是它返回最后创建的实例,而不是更改的行的实例。
编辑
为了清楚起见,这两个实例都是在AJAX事件的成功回调之后进行的。因此,在我的情况下,进行了两次调用,均返回数据;之后,将创建一个网格来表示数据。
阅读以下Google网上论坛页面后,我发现了问题:https : //groups.google.com/forum/# ! topic/slickgrid/mKZzBxl2cVM。
我确实有两个实例,但是它们都用相同的checkboxSelector
变量注册了Checkboxselectcolumn插件。因此结果相互交织。
知道这一点,修复它很容易。为每个实例添加一个变量:
instances: {
registered: {
selector: '##one',
slickGrid: null,
checkboxSelector: new Slick.CheckboxSelectColumn({ cssClass: "slick-cell-checkbox" })
},
registeredPending: { ... }
}
在注册您的插件时使用该插件。
success: function(ajaxData) {
...
instance.slickGrid.registerPlugin(instance.checkboxSelector)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句