Kendo网格:.read()之后,标题中的“全选”复选框停止工作

时间:2018-08-01 12:55:59

标签: javascript jquery kendo-grid

在使用特定的搜索过滤器后,我会显示两个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

请注意,标题复选框正常工作,直到启用了网格功能(例如列排序),然后它将停止“检查”。每单击一次该功能,它将起作用。

好像打开和关闭了“检查”标题复选框的功能。

1 个答案:

答案 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>