我有两个jqGrids。在第一个网格中,我选择一行,第二个网格根据第一个网格的id用数据刷新。至少这是它应该是如何工作的。
//This is code from the second grid
postData: '{ lobId: ' + BudgetCore.getLobId() + ' }',
//Snippet from BudgetCore...
getLobId: function () {
var row = jQuery(BudgetCore.GridTables.Lob).jqGrid('getGridParam', 'selrow');
return row;
}在Chrome中,我尝试调试函数getLobid(),但它从未执行过。发送的postData请求:{ lobId:null }。
如果我将上面的代码更改为'{ lobId:‘+1+’}‘,它可以工作,所以一定是有什么错误导致这个函数不能执行。在Chrome JS控制台中,执行BudgetCore.getLobId()可以正常工作。
发布于 2012-11-01 00:24:40
你应该使用
postData: {
lobId: function () {
return $(BudgetCore.GridTables.Lob).jqGrid('getGridParam', 'selrow');
}
}有关更多详细信息,请参阅the answer。
更新了:如果你需要在serializeGridData中额外使用JSON.stringify,那么你不能再使用最简单的serializeGridData版本了
serializeGridData: function (postData) { return return JSON.stringify(postData); }相反,您应该使用我在the answer中描述的稍微复杂一点的serializeGridData版本
serializeGridData: function (postData) {
var propertyName, propertyValue, dataToSend = {};
for (propertyName in postData) {
if (postData.hasOwnProperty(propertyName)) {
propertyValue = postData[propertyName];
if ($.isFunction(propertyValue)) {
dataToSend[propertyName] = propertyValue(); // call the function
} else {
dataToSend[propertyName] = propertyValue;
}
}
}
return JSON.stringify(dataToSend);
}https://stackoverflow.com/questions/13162354
复制相似问题