【问题标题】:Dojo Dgrid: select deselect of header checkboxDojo Dgrid:选择取消选择标题复选框
【发布时间】:2016-05-04 09:55:14
【问题描述】:
我正在使用 Dojo “dgrid/OnDemandGrid”。因为我正在为每一行使用其内置的复选框功能。
问题是,每当我一一选择所有复选框时,它的标题复选框即未选中所有复选框 并且每当我取消选择所有复选框时都相同一个然后全选复选框没有被取消选择保持在混合状态。有真假混合三种状态。
当我为此寻找解决方案时,我发现它是 Dojo Dgrid 本身的一个错误。
这是您可以查看的网址。DOjo Dgrid Sellect All functionality
请帮我解决这个问题,在此先感谢。
【问题讨论】:
标签:
javascript
html
dojo
dgrid
【解决方案1】:
当您单独选择行时,用于更新标题复选框 (allSelected) 的属性不会更新。你可能是对的,它可能是一个错误。你举报了吗?
我能想到的解决方法是自己更新标题复选框的状态。下面是执行相同操作的代码。
grid.on('dgrid-select', function () {
var selectedRows = [];
for (var e in grid.selection) {
grid.selection[e] && selectedRows.push(e)
}
//get the selector column and checkbox from that column
var column = grid.columns["select"];
var headerCheckbox = column._selectorHeaderCheckbox;
if (selectedRows.length === grid.get('total')) {
//update the checkbox when the selection count equal to total count.
headerCheckbox.indeterminate = false;
headerCheckbox.checked = true;
headerCheckbox.setAttribute('aria-checked', 'true');
grid.allSelected = true;
}
});
grid.on('dgrid-deselect', function () {
var selectedRows = [];
for (var e in grid.selection) {
grid.selection[e] && selectedRows.push(e)
}
//get the selector column and checkbox from that column
var column = grid.columns["select"];
var headerCheckbox = column._selectorHeaderCheckbox;
if (selectedRows.length === 0) {
headerCheckbox.indeterminate = false;
headerCheckbox.checked = false;
headerCheckbox.setAttribute('aria-checked', 'false');
grid.allSelected = false;
}
});
希望这对您有所帮助。