【问题标题】:JQGrid 'Change' dataevent not firing after changing gridrow data inside change function在更改函数内更改网格数据后,JQGrid 'Change' dataevent 未触发
【发布时间】:2015-12-25 08:39:00
【问题描述】:

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

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);
    }
  }
]

对于编辑模式下的下拉菜单,仅触发一次更改事件。如果我反复更改下拉值,则不会触发该事件。我在 change 函数中尝试了没有任何代码的代码,它运行良好。之后我发现 setRowData 函数导致了问题。如果我注释掉 setRowData 行,那么它工作正常。

我不确定这种行为。有什么帮助或建议吗? 在此先感谢:)

【问题讨论】:

  • 我正在使用 datatype: 'local' 作为网格。
  • 我无法找出这种行为的真正原因,但我使用 setCell() 函数来更改相应的行数据并且它有效。如果有人有什么要补充的,请回复:)

标签: javascript jquery jqgrid


【解决方案1】:

我们遇到了同样的问题 整理出来,可能对某人有所帮助,因为它很简单:

所以整个事情看起来像这样:

{ 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');
                                             },
                                         });
                                }
                            }]
                        }},

【讨论】:

    猜你喜欢
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    相关资源
    最近更新 更多