添加对话框变量重置的JqGrid BeforeShow事件

添加对话框变量重置的JqGrid BeforeShow事件,jqgrid,dialog,add,Jqgrid,Dialog,Add,在显示add对话框之前,我调用以下函数;在JqGrid上单击[+]之后 MVC控制器网格配置 ordersGrid.ClientSideEvents.BeforeAddDialogShown = "initAddDialog"; 该函数通过Ajax调用创建一个新订单记录,该记录包含或不包含链接id,具体取决于单击[+]按钮时是否选择了现有订单 其目的是提供进行另一个Ajax调用所需的id,以从另一个服务检索其他链接信息,并使用日期/时间信息和(如果适用)现有记录中的公共信息预填充新记录 fun

在显示add对话框之前,我调用以下函数;在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(如果有)

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);
我尝试在显示add对话框后调用相同的函数,但得到了相同的结果

有没有想过为什么会这样,或者有没有更好的方法来达到同样的效果


谢谢

我已将本机添加/编辑对话框从等式中删除,并使用我自己的“添加”表单以及JqGrid的本机内联编辑。我相信,通过更多的研究,可能会找到一个解决方案,但随着最后期限的临近,我不得不找到一个解决办法

$('#' + 'OrderId').val(newOrderId);
$('#' + 'OrderLinkId').val(newOrderLinkId);
$('#' + 'Stock').val(stock);
$('#' + 'SettlesTs').val(settlesTs);
$('#' + 'ReceivedTs').val(dtThis);
$('#' + 'ReceivedHHmm').val(dtTime);