0

私はLib.Web.MVCヘルパーを使用しているので、最初の jqGrid JS はそのオブジェクトによって生成されます。@grid.GetJavaScript を呼び出した後、別の呼び出しを発行して、以下に示すようにeditDataコレクションを変更します。これが私が使用している効果的なJSです。との値がコントローラ アクションに送信されることはAreaIdありAreaItemIdません。

$(document).ready(function () {
    $('#GetAreaItemDetails').jqGrid({
        colNames: ['Code', 'Name', 'Description', 'Has Addl Comments'],
        colModel: [
            { editable: true, editoptions: { "maxlength": 16 }, editrules: { required: true },
                name: 'AreaItemDetailCode'
            },
            { editable: true, editoptions: { "maxlength": 32 }, editrules: { required: true },
                name: 'AreaItemDetailName'
            },
            { editable: true, editoptions: { "maxlength": 128 }, editrules: { required: true },
                name: 'AreaItemDetailDescription'
            },
            { editable: true, edittype: 'checkbox', editrules: { required: true },
                name: 'HasAdditionalComments'
            }],
        caption: 'Area Item Details',
        url: '/Admin/GetAreaItemDetails',
        datatype: 'json',
        footerrow: true,
        jsonReader: { repeatitems: false, id: 'Id', subgrid: { repeatitems: false} },
        mtype: 'POST',
        pager: '#GetAreaItemDetailsPager',
        prmNames: { npage: 'npage' },
        rowList: [10, 20, 30, 40, 50],
        rowNum: 10,
        sortname: 'AreaItemDetailId',
        viewrecords: true,
        height: '100%'
    }).jqGrid('navGrid', '#GetAreaItemDetailsPager',
        { search: false },
        { height: 175, url: '/Admin/UpdateAreaItemDetail', width: 400, recreateForm: true,
            closeAfterEdit: true
        },
        { height: 175, url: '/Admin/InsertAreaItemDetail', width: 400, recreateForm: true,
            closeAfterAdd: true
        });

    $("#GetAreaItemDetails").jqGrid('navGrid', '#GetAreaItemDetailsPager',
        {/*navGrid options*/},
        {
            editData: {
                AreaItemId: function () {
                    return $('#ddlAreaItems').val();
                },
                AreaId: function () {
                    return $('#ddlAreas').val();
                }
            }
        },
        {
            editData: {
                AreaItemId: function () {
                    return $('#ddlAreaItems').val();
                },
                AreaId: function () {
                    return $('#ddlAreas').val();
                }
            }
        });
});
4

1 に答える 1

2

あなたの問題の理由は、1 つではなく2 つの呼び出しnavGridあると思います。navGrid メソッドは、ナビゲーター バーを作成しますグリッド内に作成できるナビゲーター バーは1 つだけです。

関数テストのコードから、メソッドによって作成されるプロパティの存在を確認する方法 (単に assignの行を参照)。だからコードnavGridnavthis.nav = true;

if(this.nav) {return;}

メソッドの 2 回目の実行をスキップするためだけに使用されます。

したがって、問題を解決するには、2 つの呼び出しを 1 つに結合する必要があります。

...
}).jqGrid('navGrid', '#GetAreaItemDetailsPager',
    { search: false },
    { height: 175, url: '/Admin/UpdateAreaItemDetail', width: 400, recreateForm: true,
        closeAfterEdit: true,
        editData: {
            AreaItemId: function () {
                return $('#ddlAreaItems').val();
            },
            AreaId: function () {
                return $('#ddlAreas').val();
            }
        }
    },
    { height: 175, url: '/Admin/InsertAreaItemDetail', width: 400, recreateForm: true,
        closeAfterAdd: true,
        editData: {
            AreaItemId: function () {
                return $('#ddlAreaItems').val();
            },
            AreaId: function () {
                return $('#ddlAreas').val();
            }
        }
    });

共通の追加設定と編集設定をフォーム編集用のデフォルト設定 (ページ上) として設定すると、コードを減らすことができます。

$.extend($.jgrid.edit, {
    height: 175,
    url: '/Admin/InsertAreaItemDetail',
    width: 400,
    recreateForm: true,
    closeAfterAdd: true,
    closeAfterEdit: true,
    editData: {
        AreaItemId: function () {
            return $('#ddlAreaItems').val();
        },
        AreaId: function () {
            return $('#ddlAreas').val();
        }
    }
});

の呼び出しnavGrid。通話自体を短縮できる場合

...
}).jqGrid('navGrid', '#GetAreaItemDetailsPager', { search: false });
于 2012-06-05T17:24:08.133 に答える