Telerik MVC网格检查所有复选框无法正常工作

时间:2013-09-19 02:29:51

标签: jquery asp.net-mvc

我知道我的代码是正确的,但是我错过了一些脚本,因为Telerik MVC网格“检查所有复选框”不起作用?我正在使用jquery-1.7.1.min.js

@(Html.Telerik().Grid<RenanNewTask.Models.RenanListViewModel>()
    .Name("RenanGrid")
    .DataKeys(dataKeys => dataKeys.Add(c => c.Org_UID))
    .Columns(columns =>
    {
        //columns.Bound(c => c.eff_date).Title("Effective Date").Format("{0:MM/dd   /yyyy}").Width(20);
        columns.Bound(c => c.eff_date).Title("Effective Date").ReadOnly(true).Format("{0:MM/dd/yyyy}").Width(20).Encoded(true)
            .ClientTemplate("<input type='checkbox' name='checkedRecords' value='<#= eff_date #>' />")
            .HeaderTemplate(
                    @<text>
                        <input type="checkbox" title="check all records" id="checkAllRecords" />
                    </text>
        )
        .Title("")
        .Width(10)
        .HeaderHtmlAttributes(new { style = "text-align:center" })
        .HtmlAttributes(new { style = "text-align:center" });
        columns.Bound(o => o.eff_date).Width(20);
        columns.Bound(c => c.name_long).Title("Name Long").Width(20);
    })
    .DataBinding(dataBinding => dataBinding.Ajax()
        .Select("GetOrgUID", "Renan"))
    .Pageable(paging => paging.Style((GridPagerStyles.PageInput | GridPagerStyles.Numeric | GridPagerStyles.PageSizeDropDown | GridPagerStyles.NextPrevious)).Position(GridPagerPosition.Bottom).PageTo(1).PageSize(20))
    .Scrollable(scrolling => scrolling.Height(250))
    .Resizable(resizing => resizing.Columns(true))
)

脚本:

<script type="text/javascript" lanuage="javascript">   
    $('#checkAllRecords').click(function checkAll() {
        $("#RenanGrid tbody input:checkbox").attr("checked", this.checked);
    }); 
</script>

1 个答案:

答案 0 :(得分:0)

原因之一可能是您过早。您想附加事件的复选框当时可能未插入DOM。

将您的代码包装到ready事件中:

$(function() {
    $('#checkAllRecords').click(function checkAll() {
        $("#RenanGrid tbody input:checkbox").attr("checked", this.checked);
    });
});

不确定,为什么要使用jquery-1.7.1,它已经过时了。一两年前,Kendo UI迁移到了jquery3。那时,由于他们引入了一些kendo.syncReady,所以我陷入了困境。我不确定这是否与您的问题有关。我曾尝试通过setTimeout在事件堆栈的末尾移动初始化逻辑:

$(function() {
    setTimeout(function() {
        $('#checkAllRecords').click(function checkAll() {
            $("#RenanGrid tbody input:checkbox").attr("checked", this.checked);
        });
    });
});