在使用特定的搜索过滤器后,我会显示两个Kendo网格。最终用户可以调整搜索过滤器并重新加载数据源。我通过检查网格是否存在以及是否已经存在来执行此操作-执行grid.read()操作(而不是重新加载整个网格)。
此检查和加载按预期方式进行。通过单击该行来选择每个单独的行,或者通过选中复选框来选择多个行(或使用单击/拖动方法)的功能可以正常工作(在read()之前和之后)。但是,全选复选框(位于标题中)在read()之后停止正常运行。
我已经编辑了代码并将其添加到小提琴here中,很抱歉,它不可运行(我无法删除足够的数据源信息以仅显示网格)。
“全选”复选框适用于网格的初始加载。我试图将.change事件还添加到调用read()的else语句中,以为可能不是在捕获更改事件-但这没有帮助。
$('#selectAllCheckbox').change(function () {
onSelectAll();
})
在read()之后,单击“全选”复选框-该框本身不显示选中标记-并且未选择表上的多行。
function onSelectAll() {
var checked = ($('#selectAllCheckbox')[0].checked)
$('.checkbox').each(function (idx, item) {
if (checked) {
if (!($(item).closest('tr').is('.k-state-selected'))) {
$(item).click();
}
} else {
if ($(item).closest('tr').is('.k-state-selected')) {
$(item).click();
}
}
});
setIsChecked();
};
编辑:
从Kendo的演示开始,我能够更好地复制我的问题,然后添加我的代码的每一部分,直到问题解决为止。在尝试将全选标头复选框功能与多选功能(具有dataBound事件)结合使用时,我能够确定问题是否存在。我需要这两个功能一起工作。
请参见示例here:
请注意,标题复选框正常工作,直到启用了网格功能(例如列排序),然后它将停止“检查”。每单击一次该功能,它将起作用。
好像打开和关闭了“检查”标题复选框的功能。
答案 0 :(得分:0)
$('#selectAllCheckbox').on('click',function(){
if ($(this).prop('checked') == true) {
$('.checkbox').prop('checked',true);
}else {
$('.checkbox').prop('checked',false);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="selectAllCheckbox"> check all
<hr>
<ol>
<li><label><input type="checkbox" class="checkbox"> checkbox [1]<label></li>
<li><label><input type="checkbox" class="checkbox"> checkbox [2]<label></li>
<li><label><input type="checkbox" class="checkbox"> checkbox [3]<label></li>
<li><label><input type="checkbox" class="checkbox"> checkbox [4]<label></li>
</ol>