在添加對話框顯示之前,我調用以下函數;點擊JqGrid上的[+]後。JqGrid添加對話框變量的BeforeShow事件重置
MVC控制器網格配置
ordersGrid.ClientSideEvents.BeforeAddDialogShown = "initAddDialog";
該功能使得調用Ajax創建一個新的訂單記錄或者具有或不具有連接ID,依賴於當[+]鍵爲是否被選擇一個現有的順序點擊。
其目的是爲了使另一個Ajax調用從另一個服務檢索其他服務的額外鏈接信息,以及用現有的日期/時間信息和(如果適用的話)公共信息預先填充新記錄記錄。
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使用螢火蟲這裏的代碼,我可以看到變量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);
我已經打過電話相同的值顯示添加對話框後的功能,但獲得相同的結果。
任何想法爲什麼這是或有更好的方法來達到相同的結果?
感謝