0

私はこのコードを持っていて、少し問題があります。編集すると、ハンドラーに送信するrowid値があり、イベントごとに保存されます。行を編集するとうまくいきますが、編集してすぐに新しい行を追加したい場合は、この値()nullが必要ですが、最後に編集した行と同じ値になります。ページャーで使用できることは知っていますが、これを使用すると、jqGridがデフォルトで使用するポップアップウィンドウを使用できません。codSelectedonSelectRow_codSelectedaddfunc

ありがとう。

$("#list").jqGrid({
    url: '/modulos/mantenimiento/Proveedores.ashx', 
    datatype: 'xml',
    mtype: 'GET',
    colNames: ['Codigo' //Some more colnames and colmodels]
    colModel: [
        { name: 'Codigo', index: 'PRg_Codigo', edittype: 'select',
            editable: true, editrules: { edithidden: false }, editoptions:
            { size: 30, dataUrl: '/modulos/mantenimiento/grupoProveedores.ashx?
            oper=selectAllGroups' }, sortable: true }
    ],
    onSelectRow: function (rowid) {
        _codSelected = rowid;
    },
    ajaxSelectOptions: {
        data: {
            codSelected: function () { 
                return _codSelected;
            }
        }
    }
});

jQuery("#list").jqGrid('navGrid', '#pager', {
    alerttext: "Seleccione un Servicio.",
    add: true, addtitle: "Crear nuevo Servicio",
    del: true, deltitle: "Eliminar Servicio",
    edit: true, edittitle: "Modificar Servicio",
    search: false, searchtitle: "Búsqueda",
    refresh: true,
    cloneToTop: true
},
{ width: 360, resize: false, closeAfterEdit: true, recreateForm: true,
    viewPagerButtons: true, afterComplete: muestraResultadoOperacion },
{ width: 360, resize: false, closeAfterAdd: true, recreateForm: true,
    viewPagerButtons: true, afterComplete: muestraResultadoOperacion },
{},
{ closeAfterSearch: true, closeOnEscape: true });
4

1 に答える 1

1

私はあなたの要件を完全に理解しているかどうかわかりません。

まず第一に、jqGrid_codSelectedの内部オプションの値と同じようです。最後に選択した行のを取得するためにselrow使用できます。[編集]ダイアログの場合にのみ変数を現在選択されている行の値に初期化し、[追加]ダイアログの場合に設定する場合は、 beforeInitDataコールバック内でこれを行うことができます。[追加]ダイアログのコールバックはに設定でき、[編集]ダイアログの同じコールバックはを使用できます。それはあなたの問題を解決するはずです。$("#list").jqGrid("getGridParam", "selrow")rowid_codSelectednullbeforeInitData_codSelectednull_codSelected = $(this).jqGrid("getGridParam", "selrow");

更新:私の提案をクリアするために、次のコードを投稿することにしました:

var _codSelected = null;

// ...
// here should be the definition of jqGrid where you removed
// the current code of onSelectRow which changes _codSelected
// ...

jQuery("#list").jqGrid('navGrid', '#pager', {
    alerttext: "Seleccione un Servicio.",
    add: true, addtitle: "Crear nuevo Servicio",
    del: true, deltitle: "Eliminar Servicio",
    edit: true, edittitle: "Modificar Servicio",
    search: false, searchtitle: "Búsqueda",
    refresh: true,
    cloneToTop: true
},
{ width: 360, resize: false, closeAfterEdit: true, recreateForm: true,
    beforeInitData: function () {
        // set _codSelected in case of Edit operation
        _codSelected = $(this).jqGrid("getGridParam", "selrow");
    },
    viewPagerButtons: true, afterComplete: muestraResultadoOperacion },
{ width: 360, resize: false, closeAfterAdd: true, recreateForm: true,
    beforeInitData: function () {
        // clear _codSelected in case of Add operation
        _codSelected = null;
    },
    viewPagerButtons: true, afterComplete: muestraResultadoOperacion },
{},
{ closeAfterSearch: true, closeOnEscape: true });
于 2012-10-03T09:53:49.647 に答える