2

私はjQueryを初めて使用するので、プロジェクトでjqGridを使用する必要があります。

編集/削除/挿入に問題が1つあります。URLが1つしかないのでediturl、コントローラーでoperプロパティを使用して、挿入操作か削除操作かを決定します。

ただし、jqGridでの編集、削除、および挿入操作用に個別のURLが必要です。それを実現する方法を教えてください。

クライアント側のコード:

$(document).ready(function () {
    var lastsel2;
    var grid = jQuery("#list5").jqGrid({
        url: '/home1/GetUserData',
        datatype: "json",
        mtype: "POST",
        colNames: ['Code', 'LoginID', 'Emailid', 'CreateDate'],
        colModel: [
        // { name: 'act', index: 'act', width: 75, sortable: false },
                        {name: 'Code', index: 'Code', width: 55, editable: true },
                        { name: 'LoginID', index: 'LoginID', width: 90, editable: true },
                        { name: 'Emailid', index: 'Emailid', width: 100, editable: true },
                    { name: 'CreateDate', index: 'CreateDate', width: 100, editable: true }
                      ],
        rowNum: 10,
        width: 700,
        height: 300,
        rowList: 10,
        pager: $("#pager2"),
        editurl: "/home1/EditUserData",
        onSelectRow: function (id) {
            if (id && id !== lastsel2) {
                if (id == "new_row") {
                    grid.setGridParam({ editurl: "/home1/InsertUserData" });
                }
                else {
                    grid.setGridParam({ editurl: "/home1/EditUserData" });
                }
                jQuery('#list5').restoreRow(lastsel2);
                $("#list5_ilsave").addClass("ui-state-disabled");
                $("#list5_ilcancel").addClass("ui-state-disabled");
                $("#list5_iladd").removeClass("ui-state-disabled");
                $("#list5_iledit").removeClass("ui-state-disabled");
                lastsel2 = id;
            }
        },
        caption: "Simple data manipulation"
    });
    jQuery("#list5").jqGrid('navGrid', '#pager2', { edit: false, add: false, del: true, search: false, refresh: false }, {}, {}, { url: '/home1/DeleteUserData' });
    jQuery("#list5").jqGrid('inlineNav', "#pager2", { edit: true, add: true, del: true, search: false, refresh: false });
});
4

1 に答える 1

9

次のように、navGridメソッドを使用してすべてのアクションのオプションを渡すことができます。

jQuery('#list5').jqGrid('navGrid', '#pager2', { edit: true, add: true, del: true },
    //edit options
    { url: '/home1/EditUserData' },
    //add options
    { url: '/home1/AddUserData' },
    //delete options
    { url: '/home1/DeleteUserData' }
);

詳細はこちらこちらをご覧ください。

アップデート

inlineNavメソッドの場合、jqGridは常に同じパラメーターのセット(editParams)をsaveRowメソッドに渡します。効果として、編集/追加要求は同じURLに対して行われます。oper追加の編集を区別するためのチェックに固執しています。

グリッドをリロードする場合は、editParamsを使用して、aftersavefuncを次のようにトリガーするrealoadGridように設定できます。

jQuery('#list5').jqGrid('inlineNav', '#pager2', { edit: true, add: true, editParams: {
   aftersavefunc: function(rowId, response) { jQuery('#list5').trigger('reloadGrid'); }
}});

ただし、編集後に更新が発生することも覚えておく必要があります(上記と同じ理由で)。応答パラメーターを使用して、これら2つを区別することができます。inlineNavにはこれらのオプションがないため、コードからdel、search、refreshも削除しました。

于 2012-04-12T08:48:24.910 に答える