0

我有这个代码,我有一个小问题,当我编辑时,我有rowidcodSelected要发送到我的处理程序,它由onSelectRow事件存储。如果我编辑一行,效果很好,但如果编辑一个并且我想立即添加一个新行,我需要这个值 ( _codSelected) null,但它与最后编辑的行具有相同的值。我知道我可以addfunc在寻呼机中使用,但如果我使用它,我无法使用 jqGrid 默认使用的弹出窗口。

谢谢。

$("#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

我不确定我是否完全理解您的要求。

首先_codSelected看起来selrow和jqGrid的internal option的值是一样的。您可以使用$("#list").jqGrid("getGridParam", "selrow")获取rowid最后选择的行的。如果您只想在编辑对话框的情况下_codSelected将变量初始化为当前选定行的值,并在添加对话框的情况下将其设置为,您可以在beforeInitData回调中执行此操作。添加对话框的回调可以设置为,编辑对话框的回调可以使用。它应该可以解决您的问题。nullbeforeInitData_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 回答