2012-10-22 84 views
0

在添加對話框顯示之前,我調用以下函數;點擊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); 

我已經打過電話相同的值顯示添加對話框後的功能,但獲得相同的結果。

任何想法爲什麼這是或有更好的方法來達到相同的結果?

感謝

回答

0

我已經採取了本地添加/編輯對話框的方程,並用我自己的「添加」形式的jqGrid的本地內聯編輯一起。我相信有更多的研究可以找到解決方案,但是如果有迫近的期限,我不得不尋找解決方法。