我試圖實現手動回發觸發代碼不附加到控件。我不想使用AJAX PageMethods,因爲我需要在回發期間引用某些控件,並且希望結果更新爲頁面上的gridview。ASP.Net手動回發不工作從動態創建linkbutton
我已經有其他兩種方法可以工作,但由於某種原因我的第三個方法沒有部署,但確實在我的開發機器上正常工作。
代碼後面(的Page_Load)
switch (Request["__EVENTARGUMENT"]) {
case "ItemReserved":
GetAllStock();
break;
case "PendingItemRemoved":
PopulatePending();
break;
case "StockInSubmitted":
SubmitNewStock(); // this doesn't fire
break;
}
我插線儘快寫入日誌文件中的代碼達到「SubmitNewStock()」。日誌寫在我的開發機器上,但不是在網絡服務器上。其他兩個回發按預期工作。
頁腳本
function ctxMenu_Reserve() {
PageMethods.SetItemReserved(CGRefForMenu);
__doPostBack('', 'ItemReserved');
HideMouseMenu();
}
function ctxMenuPending_Remove() {
PageMethods.RemovePendingItem(CGRefForPendingMenu);
__doPostBack('', 'PendingItemRemoved');
}
function StockINSubmit(){
SubmitPlaceHolder = document.getElementById('<%=PlaceholderStockInSubmit.ClientID %>');
SubmitPlaceHolder.innerHTML = "Processing...";
__doPostBack('', 'StockInSubmitted'); //Causes postback, but relevant code is not triggered once on my live server
}
有誰知道這是爲什麼不工作,一旦我部署站點到我的生活的Web服務器?
我應該提到StockINSubmit()是從一個動態創建的客戶端鏈接按鈕啓動的,該按鈕位於模式彈出框內。
PlaceholderStockInSubmit.Controls.Add(
new LinkButton() {
OnClientClick = "StockINSubmit()",
Text = "Submit",
ID = "lnkStockInSubmit"
});
StockINSubmit()替換包含該按鈕的DIV的HTML內容。 (所以我點擊「提交」,它會更改爲「處理」標籤)。我無法看到爲什麼會導致任何問題的原因,但認爲這是值得一提的。
不知道,但一旦我試圖調用__doPostBack只意識到,__doPostBack只會呈現如果有需要JS回發模擬器的控件。所以我在頁面上添加了一個鏈接按鈕。檢查__doPostBack是否在呈現的標記中。 – MatthewMartin
我已經回答了關於如何使用託管代碼正確創建__doPostBack的問題:http://stackoverflow.com/questions/10483271/need-to-call-server-side-event-using-dopostback/10483439#10483439 – CAbbott
@MatthewMartin __doPostback確實呈現給頁面,因爲我有相當多的與回發關聯的控件。 – user1830285