JQGrid'变化'在更改函数内部更改gridrow数据后,dataevent未触发

时间:2015-09-28 07:00:47

标签: javascript jquery jqgrid

我在网格中使用下拉列表。我打算根据下拉列的更改值更改其他列的值。我的代码如下所示

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行,那么它可以正常工作。

我不确定这种行为。任何帮助或建议? 在此先感谢:)

1 个答案:

答案 0 :(得分: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');
                                             },
                                         });
                                }
                            }]
                        }},