2015-09-28 356 views
2

我正在網格內使用下拉菜單。我打算根據下拉列的更改值更改其他列的值。我的代碼如下所示JQGrid'Change'dataevent在更改函數內更改gridrow數據後不會觸發

dataEvents: [ 
    { 
    type: 'change', 
    fn: function (e) { 
     var row = $("#Grid").closest('tr.jqgrow'); 
     var rowId = $("#Grid").jqGrid('getGridParam', 'selrow'); 
     //alert(rowId); 
     var rowData = jQuery('#Grid').getRowData(rowId); 
     rowData.ProductID = e.target.value; 
     //alert(rowData.ProductID); 
     $("#Grid").jqGrid('collapseSubGridRow', rowId); 
     rowData.SelectedOptions = rowData.ProductID + "------"; 
     jQuery('#Grid').setRowData(rowId, rowData); 
    } 
    } 
] 

更改事件在編輯模式下僅觸發一次。如果我反覆更改下拉值,則事件不會被觸發。我嘗試了代碼內沒有任何代碼的變化功能,它運行良好。之後,我發現setRowData函數導致了問題。如果我註釋掉setRowData行,那麼它工作正常。

我不確定這種行爲。任何幫助或建議? 感謝提前:)

+0

我使用的數據類型: '本地'網格。 –

+0

我無法找出這種行爲的真正原因,但我使用setCell()函數來更改相應的行數據並且它工作。如果有人有任何補充的答案,請回復:) –

回答

0

我們已經得到了同樣的問題整理出來,可以幫助別人,因爲它的簡單:

所以整個事情是這樣的:

{ name: 'STOP', index: 'STOP', width: 30 ,editable: true,edittype: 'select',editoptions:{ 
          value: getStopLookup(), 
          dataEvents: [{type: 'change', 
           fn: function (e) { 
            // var rowid = e.target.id; 
            var row = $(e.target).closest('tr.jqgrow'); 
            var rowid = row.attr('id'); 
            jQuery(grid_selector).saveRow(rowid, 
             { 
              succesfunc: function (response) 
              { 
               return true; 
              }, 
              url: '@Url.Action("UpdateStop", "Route")', 
              mtype: "POST", 
              aftersavefunc:function (response) 
              { 
               ReloadGrid('RoutingDataGrid'); 
              }, 
             }); 
           } 
          }] 
         }},