我知道我的代码是正确的,但是我错过了一些脚本,因为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>
答案 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);
});
});
});