我正在使用 Telerik MVC Grid,其中一列是复选框。如果我选择复选框,然后转到第 2 页,然后返回第 1 页,则所有复选框都消失了。这当然是 HTTP 的工作方式。现在,我将所有选中的复选框放在隐藏字段中,但是由于网格会进行某种回发,所以下次我的隐藏字段会被清除。
最佳答案
如果您使用客户端数据绑定(bind),您可以使用下面的 javascript/jquery 来维护复选框状态。
保持复选框状态:
var selectedIds = [];
$(document).ready(function () {
//wire up checkboxes.
$('#YOUR_GRID_ID :checkbox').live('change', function (e) {
var $check = $(this);
console.log($check);
if ($check.is(':checked')) {
//add id to selectedIds.
selectedIds.push($check.val());
}
else {
//remove id from selectedIds.
selectedIds = $.grep(selectedIds, function (item, index) {
return item != $check.val();
});
}
});
});
数据绑定(bind)后恢复复选框状态:
function onDataBound(e) {
//restore selected checkboxes.
$('#YOUR_GRID_ID :checkbox').each(function () {
//set checked based on if current checkbox's value is in selectedIds.
$(this).attr('checked', jQuery.inArray($(this).val(), selectedIds) > -1);
});
}
我的博客上提供了更详细的解释:
http://blog.cdeutsch.com/2011/02/preserve-telerik-mvc-grid-checkboxes.html
关于asp.net-mvc - 在 ASP.NET MVC 应用程序中分页时保持 Telerik MVC 网格中的复选框状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4761323/