0
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. 有没有人有解决这个问题的建议?

谢谢

4

1 回答 1

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;
                                     }
            });

        });
于 2013-06-05T05:26:01.680 回答