我有一個應用程序使用帶有內容頁面和用戶控件的母版頁。在其中一個用戶控件中,我們有另一個用戶控件(我知道這是一個Inception類的東西)。這個用戶控件使用RadAjaxManagerProxy並且有一個產生RadWindow的控件。一切正常:窗口顯示一些RadGrids填充了來自DB的字段,然後關閉窗口。呼叫RadWindow客戶端的VisibleOnPageLoad端
所有這些都是在某些服務器端事件中使用RadWindow1.VisibleOnPageLoad = true
完成的。關閉窗口後,我無法設置RadWindow1.VisibleOnPageLoad = false;
,所以當我點擊另一個觸發AJAX事件的控件(在這種情況下顯示的是不同的RadWindow)時,RadWindow從之前的彈出狀態恢復。
在我們的應用程序的其他部分,我們已經通過RadWindow的OnClientClose方法將參數傳遞給服務器,這是我們用來調用RadAjaxManager的服務器端OnAjaxRequest事件的方法。這觸發一個服務器端事件,我可以設置屬性,就像這樣:
JS:
function WindowClose(sender, args) {
SendRequest("ArgumentName");
}
function SendRequest(requestName) {
var ajaxManager = $find("<%= RadAjaxManagerMain.ClientID %>");
ajaxManager.ajaxRequest(requestName);
}
C#:
protected void RadAjaxManagerMain_AjaxRequest(object sender, AjaxRequestEventArgs args)
{
if (args.Argument == "ArgumentName")
{
RadWindow1.VisibleOnPageLoad = false;
}
}
但因爲我使用的是RadAjaxManagerProxy,該OnAjaxRequest方法不支持RadAjaxManager。
我已經想出了一些這方面的選擇:在客戶端,這是我不能對任何論壇或文檔的任何地方發現
- 集VisibleOnPageLoad。
- 將某種不同的事件傳遞給服務器,以便我可以設置屬性。
或者也許有一些完全不同,我不知道或沒有想到。我願意接受任何選擇。當我關閉窗口時,我已經有了一個Javascript方法,但我無法想出一個方法來讓窗口保持關閉狀態,而不需要執行完整的回發。
如何防止我的RadWindow在另一個AJAX請求上打開?
http://www.telerik.com/community/forums/aspnet-ajax/window/opening-radwindow-from-the-server.aspx將更詳細地解釋此案例:) – rdmptn 2013-04-16 13:10:44