1

我知道我的代码是正确的,但我是否缺少一些脚本,因为 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>
4

1 回答 1

0

原因之一可能是,你来早了。您想要附加事件的复选框当时可能不会插入到 DOM 中。

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

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

不知道你为什么要使用jquery-1.7.1,它已经严重过时了。一两年前,Kendo UI 迁移到了 jquery 3。当时我已经陷入了地狱,因为他们引入了一些kendo.syncReady. 我不确定,如果这与您的问题有关。我通过以下方式在事件堆栈末尾移动初始化逻辑setTimeout

$(function() {
    setTimeout(function() {
        $('#checkAllRecords').click(function checkAll() {
            $("#RenanGrid tbody input:checkbox").attr("checked", this.checked);
        });
    });
});
于 2018-07-19T00:09:37.870 回答