0

在显示添加对话框之前,我调用了以下函数;单击 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);

在显示添加对话框后,我尝试调用相同的函数,但得到相同的结果。

关于为什么会这样的任何想法,或者有没有更好的方法来实现相同的结果?

谢谢

4

1 回答 1

0

我已将本机添加/编辑对话框排除在外,并使用我自己的“添加”表单以及 JqGrid 的本机内联编辑。我敢肯定,通过更多的研究,有可能找到解决方案,但随着最后期限的临近,我不得不找到一种解决方法。

于 2012-10-30T10:10:22.470 回答