追加ダイアログが表示される前に、次の関数を呼び出します。JqGridで[+]をクリックした後。
MVCコントローラーグリッド構成
ordersGrid.ClientSideEvents.BeforeAddDialogShown = "initAddDialog";
この関数は、[+]ボタンがクリックされたときに既存の注文が選択されたかどうかに応じて、リンクIDの有無にかかわらず新しい注文レコードを作成するためにAjax呼び出しを行います。
目的は、別のサービスから追加のリンク情報を取得するために別のAjax呼び出しを行うために必要なIDを利用可能にし、新しいレコードに日付/時刻情報と(該当する場合)既存のレコードからの共通情報を事前入力することです。
function initAddDialog() {
var newOrderId = 0;
var newOrderLinkId = 0;
var selRow = jQuery('#clientOrderGrid').jqGrid('getGridParam', 'selrow');
var selRowData = jQuery('#clientOrderGrid').jqGrid('getRowData', selRow);
選択した行からリンクIDを取得します(存在する場合)
var curOrderLinkId = (selRowData.OrderLinkId == null) ? 0 : selRowData.OrderLinkId;
新しい「保留」注文を作成するためのAjax呼び出し
$.ajax({
url: '/Order/ajaxNewOrder?OrderLinkId=' + curOrderLinkId,
success: function (newOrderResponse) {
arr = newOrderResponse.split("|");
newOrderId = arr[0];
newOrderLinkId = arr[1];
},
error: function () { alert("There was an error creating an Order record"); }
});
FirefoxでFirebugを使用してここでコードを壊すと、変数newOrderIdとnewOrderLinkIdが新しく作成されたレコードのIDで正しく設定されていることがわかります。また、F8キーを押すと、(すでに表示されている)ダイアログにこれらの//が表示されます。値。
コードを壊さない場合、ダイアログは表示されますが、変数が初期化された値、つまりnewOrderId = 0、newOrderLinkId=0が表示されます。
$('#' + 'OrderId').val(newOrderId);
$('#' + 'OrderLinkId').val(newOrderLinkId);
$('#' + 'Stock').val(stock);
$('#' + 'SettlesTs').val(settlesTs);
$('#' + 'ReceivedTs').val(dtThis);
$('#' + 'ReceivedHHmm').val(dtTime);
追加ダイアログが表示された後に同じ関数を呼び出そうとしましたが、同じ結果が得られます。
これがなぜであるか、または同じ結果を達成するためのより良い方法があるかについての考えはありますか?
ありがとう