如何在jqGrid中设置一个空值

时间:2012-10-03 07:45:41

标签: jqgrid null handler

我有这个代码,我有一点问题,当我编辑时,我在rowid中有codSelected值发送给我的处理程序,它由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 });

1 个答案:

答案 0 :(得分:1)

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

首先,_codSelected似乎与jqGrid的内部selrow选项的值相同。您可以使用$("#list").jqGrid("getGridParam", "selrow")获取最后一个选定行的rowid。如果您想将_codSelected变量初始化为当前所选行的值,仅在编辑对话框的情况下,并在添加对话框时将其设置为null ,您可以执行此操作这里面是beforeInitData回调。 “添加”对话框的beforeInitData回调可以将_codSelected设置为null,“编辑”对话框的相同回调可以使用_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 });