2012-10-03 53 views
0

我有這段代碼,並且我有一個小問題,當我編輯時,我有rowidcodSelected發送給我的處理程序,它的存儲由onSelectRow事件發生。如果我編輯一行,運行良好,但如果編輯一個並立即添加一個新的,我需要這個值(_codSelected)爲空,但它具有與編輯的最後一行相同的值。我知道我可以在尋呼機中使用addfunc,但是如果我使用這個,我不能使用默認情況下jqGrid使用的彈出窗口。如何在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

我不確定我是否瞭解您的全部要求。

首先_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 }); 
+0

嗨奧列格,但我怎麼做動作的情況下beforeinitdata函數內(編輯或添加)?哪個變量必須比較?謝謝。 – bombai

+1

@bombai:對不起,您發佈的代碼沒有'formatter:「actions」'。你究竟是什麼意思?有很多方法可以實現表單編輯和內聯編輯。您可以在任何使用表單編輯的實現中指定'beforeInitData'回調,但是您應該準確描述您擁有的問題。 – Oleg

+0

嗨Oleg,我使用表單編輯,我不知道如何使用格式化程序選項,我正在閱讀有關它。在這裏,你可以看到我的網格截圖,http://i.imgbox.com/adg0GLTy.jpg 和問題是如果我編輯之前添加,當我添加我需要設置空_codSelected因爲這個變量設置之前onSelectRow(編輯),並且當我按下添加按鈕時,我想發送這個變量爲空而不是最後的編輯值。你能聽懂我說話嗎?非常感謝。 – bombai