我在网格中使用下拉列表。我打算根据下拉列的更改值更改其他列的值。我的代码如下所示
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)
我们遇到了同样的问题将其排除,可能对某人有所帮助,因为它过于简单:
所以整件事看起来像这样:
{ 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');
},
});
}
}]
}},