function linkFormatter(row, cell, value, columnDef, dataContext) {
var cell = "";
cell += '<input type="checkbox" id="cb' + dataContext['id'] + '" name="cb' + dataContext['id'] + '" value="' + dataContext['id'] + '" ' + (dataContext['Reviewer'] == 'Unassigned' ? 'class="unassignedLoan"' : "") + '> ';
cell += '<a href="LoanEdit.aspx?loanid=' + dataContext['id'] + '">' + value + '</a>';
return cell;
};
我的格式化程序函数为dataView
。当用户将该行滚出视图并单击其他单元格时,格式化程序创建的checkbox
将被重置。我认为虚拟滚动是使用格式化程序重新呈现该单元格,因此它会丢失checkbox
的值。有没有人建议解决这个问题?
由于
答案 0 :(得分:0)
在滚动或排序时,会再次创建网格DOM。因此初始值会重置。 您必须在数组中保存值(例如,选中复选框的id)并在滚动和排序事件上再次设置它。
这样做......
grid.onScroll.subscribe(function(e) {
grid.invalidate();
grid.render();
var $canvas = $(grid.getCanvasNode()), $allRows = $canvas
.find('.slick-row');
$($allRows).each(function() {
if(this row's checkbox is in selectedRowId){
set checkbox property to checked;
}
});
});
grid.onSort.subscribe(function(e) {
grid.invalidate();
grid.render();
var $canvas = $(grid.getCanvasNode()), $allRows = $canvas
.find('.slick-row');
$($allRows).each(function() {
if(this row's checkbox is in selectedRowId){
set checkbox property to checked;
}
});
});