1

私は2つのjqGridを持っています。最初のグリッドで行を選択すると、2 番目のグリッドは最初のグリッドの 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 + ' }' に変更すると機能するため、この関数が実行されない原因は何か間違っているに違いありません。BudgetCore.getLobId() を実行する Chrome JS コンソールでは、正常に動作します。

4

1 に答える 1

2

使用する必要があります

postData: {
    lobId: function () {
        return $(BudgetCore.GridTables.Lob).jqGrid('getGridParam', 'selrow');
    }
}

詳細については、回答を参照してください。

更新JSON.stringify:の中でさらに使用する必要がある場合はserializeGridData、最も単純なバージョンを使用することはできませんserializeGridData:

serializeGridData: function (postData) { return return JSON.stringify(postData); }

その代わりに、回答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);
}
于 2012-10-31T16:24:40.460 に答える