在显示添加对话框之前,我调用了以下函数;单击 JqGrid 上的 [+] 后。
MVC 控制器网格配置
ordersGrid.ClientSideEvents.BeforeAddDialogShown = "initAddDialog";
该函数进行 Ajax 调用以创建一个新的订单记录,无论是否带有链接 ID,这取决于单击 [+] 按钮时是否选择了现有订单。
目的是提供进行另一个 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);
在显示添加对话框后,我尝试调用相同的函数,但得到相同的结果。
关于为什么会这样的任何想法,或者有没有更好的方法来实现相同的结果?
谢谢