5

サブグリッドを含むグリッドがあります。どちらのグリッドにもチェックボックス列があります。親チェックボックスをクリックすると、すべてのサブグリッドチェックボックスが自動的にチェック/チェック解除されます。すべてのチェックボックスは DB 値にマップされているため、ステータスが変更されるたびに DB の値が変更され、グリッドをリロードしてチェックボックスのステータスを更新します。

問題は、グリッドをリロードすると、展開されたサブグリッドが失われることです。これは、チェックボックスをクリックするたびにグリッドがリロードされるため、非常に面倒です...

グリッドをリロードするときに、どの行が消費されるかのステータスを維持する方法はありますか?

ここに私のコードの一部があります:

$('#jqgSearchTaxPayer').jqGrid({
                        ....
                        subGrid: true,
                        subGridRowExpanded: function (sendSubGrid, lineId) {
                            var sendSubGridId;
                            sendSubGridId = sendSubGrid + "_t";
                            $("#" + sendSubGrid).html("<table id='" + sendSubGridId + "' class='scroll'></table>");

                            $("#" + sendSubGridId).jqGrid({
                                ....

                            { name: 'Keep', index: 'Keep', width: '9px', align: 'center',
                                editable: true, edittype: 'checkbox',
                                formatter: function (cellvalue, options, rowObject) {
                                    cellvalue = cellvalue + "";
                                    cellvalue = cellvalue.toLowerCase();
                                    var bchk = " checked=\"checked\"";
                                    if (cellvalue == "false") {
                                        bchk = "";
                                    }
                                    return "<input type='checkbox' onclick=\"SendLineChecked('" + options.rowId + "','" + sendSubGrid + "');\" " + bchk + " value='" + cellvalue + "' offval='no' />";
                                }, formatoptions: { disabled: false }
                            }],
                                ....

よろしくお願いします。

4

1 に答える 1

3

この投稿に触発された解決策を見つけました。

現在展開されているすべての行を取得し、リロードをトリガーする関数を宣言します

var scrollPosition = 0;
var ids = [];

function RefreshGridData() {
    var num;
    ids = new Array();
    $("#jqgSearchTaxPayer tr:has(.sgexpanded)").each(function () {
        num = $(this).attr('id');
        ids.push(num);
    });
    $("#jqgSearchTaxPayer").trigger("reloadGrid");
}

メイン グリッドの GridComplete() 関数で、ライン コレクションを解析して展開します。

gridComplete: function () {
                             for (var j = 0; j < ids.length; j = j + 1) {
                                 $("#jqgSearchTaxPayer").jqGrid('expandSubGridRow', ids[j]);
                             }
                         },
于 2012-06-14T07:01:55.630 に答える