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 に答える