SlickGrid onSelectedRowsChanged 未触发
SlickGrid onSelectedRowsChanged not firing
我对 slickgrid 有以下问题:
- 左键单击第 1 行(onSelectedRowsChanged 按预期触发)
- 按住控制按钮
- 左键单击第 2 行(onSelectedRowsChanged 按预期触发)
- 左键单击第 1 行(onSelectedRowsChanged 按预期触发)
- 松开控制键
- 单击第 1 行 (onSelectedRowsChanged 不会触发!如果您单击与之前相同的第 1 行单元格)
上述第 6 步中所述的问题。这是显示问题的 jsfiddler 的 link:
http://jsfiddle.net/fortesl/oLj8otsj/1/
还附上代码:
var grid;
var data = [];
var columns = [{
id: "title",
name: "Title",
field: "title",
width: 300,
selectable: false,
resizable: false
}, {
id: "priority",
name: "Priority",
field: "priority",
width: 200,
selectable: false,
resizable: false
}];
var options = {
editable: true,
enableAddRow: true,
enableCellNavigation: true,
forceFitColumns: true,
autoEdit: false
};
for (var i = 0; i < 100; i++) {
var d = (data[i] = {});
d["title"] = "Task " + (i + 1);
d["priority"] = "Medium";
}
grid = new Slick.Grid("#myGrid", data, columns, options);
grid.setSelectionModel(new Slick.RowSelectionModel());
grid.onSelectedRowsChanged.subscribe(function () {
var selectedRows = grid.getSelectedRows();
for (var i = 0; i < selectedRows.length; i++) {
selectedRows[i] = selectedRows[i] + 1;
}
$('.selected-rows')[0].innerHTML = selectedRows;
});
grid.onClick.subscribe(function () {
$('.selected-rows')[0].innerHTML = '';
});
请帮忙
我通过处理 OnClick 事件并从处理程序调用 setSelectedRows 解决了我的问题。如下所示:
grid.onClick.subscribe(function(e) {
var cell = $scope.grid.getCellFromEvent(e);
var row = (cell) ? cell.row : 0;
var rows = [row];
grid.setSelectedRows(rows);
});
这是因为单元格(而不是行)处于活动状态,并且在 slick.grid.js 中有一项检查,确保在单击已经处于活动状态的单元格时不会激活触发器。
看看
function handleClick(e)...
在源代码文件中,您会看到有问题的检查。
OnClick 事件和调用 setSelectedRows 为所选行提供了另一种高亮颜色(更像黄色-粉红色),而不是 onSelectedRowsChanged(在我的应用程序中为蓝色)
我对 slickgrid 有以下问题:
- 左键单击第 1 行(onSelectedRowsChanged 按预期触发)
- 按住控制按钮
- 左键单击第 2 行(onSelectedRowsChanged 按预期触发)
- 左键单击第 1 行(onSelectedRowsChanged 按预期触发)
- 松开控制键
- 单击第 1 行 (onSelectedRowsChanged 不会触发!如果您单击与之前相同的第 1 行单元格)
上述第 6 步中所述的问题。这是显示问题的 jsfiddler 的 link: http://jsfiddle.net/fortesl/oLj8otsj/1/
还附上代码:
var grid;
var data = [];
var columns = [{
id: "title",
name: "Title",
field: "title",
width: 300,
selectable: false,
resizable: false
}, {
id: "priority",
name: "Priority",
field: "priority",
width: 200,
selectable: false,
resizable: false
}];
var options = {
editable: true,
enableAddRow: true,
enableCellNavigation: true,
forceFitColumns: true,
autoEdit: false
};
for (var i = 0; i < 100; i++) {
var d = (data[i] = {});
d["title"] = "Task " + (i + 1);
d["priority"] = "Medium";
}
grid = new Slick.Grid("#myGrid", data, columns, options);
grid.setSelectionModel(new Slick.RowSelectionModel());
grid.onSelectedRowsChanged.subscribe(function () {
var selectedRows = grid.getSelectedRows();
for (var i = 0; i < selectedRows.length; i++) {
selectedRows[i] = selectedRows[i] + 1;
}
$('.selected-rows')[0].innerHTML = selectedRows;
});
grid.onClick.subscribe(function () {
$('.selected-rows')[0].innerHTML = '';
});
请帮忙
我通过处理 OnClick 事件并从处理程序调用 setSelectedRows 解决了我的问题。如下所示:
grid.onClick.subscribe(function(e) {
var cell = $scope.grid.getCellFromEvent(e);
var row = (cell) ? cell.row : 0;
var rows = [row];
grid.setSelectedRows(rows);
});
这是因为单元格(而不是行)处于活动状态,并且在 slick.grid.js 中有一项检查,确保在单击已经处于活动状态的单元格时不会激活触发器。
看看
function handleClick(e)...
在源代码文件中,您会看到有问题的检查。
OnClick 事件和调用 setSelectedRows 为所选行提供了另一种高亮颜色(更像黄色-粉红色),而不是 onSelectedRowsChanged(在我的应用程序中为蓝色)