2013-04-11 107 views
0

我有一個應用程序使用帶有內容頁面和用戶控件的母版頁。在其中一個用戶控件中,我們有另一個用戶控件(我知道這是一個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請求上打開?

回答

0

剛剛找到解決方案。這是正確的在我面前。在RadWindowManager上設置EnableViewState="false"可以防止這個問題的發生。很簡單。希望它能幫助未來的人。

+1

http://www.telerik.com/community/forums/aspnet-ajax/window/opening-radwindow-from-the-server.aspx將更詳細地解釋此案例:) – rdmptn 2013-04-16 13:10:44