2013-11-04 93 views
0

我在我的項目中使用Telerik RadControls,並且有一個菜單,我有一個「關於」按鈕。當我點擊'關於'按鈕時,會彈出一個窗口來描述應用程序。問題是如果我刷新頁面或導航到另一個頁面,然後回到第一頁,窗口會自動彈出。Telerik窗口在每次頁面刷新後自動打開

目標只有當用戶單擊關於按鈕時彈出窗口。

這裏是我用來獲取窗口中的代碼:

<!--About Window--> 
<telerik:RadWindowManager runat="server" EnableViewState="false" KeepInScreenBounds="true"></telerik:RadWindowManager> 
<telerik:RadWindow ID="AboutMenu" Behaviors="Close" Animation="None" runat="server" Width="360px" KeepInScreenBounds="true" Height="360px" Modal="true" VisibleStatusbar="false" Skin="Glow"> 
<ContentTemplate> 
<p style="text-align: center;">Sample Window Information</p> 
</ContentTemplate> 
</telerik:RadWindow> 

的Javascript

function OnClientItemClick(sender, eventArgs) { 
      if (window.args.get_item().get_text() == "About") { 
       var radwindow = window.$find(window.AboutMenu.ClientID); 
       window.args.set_cancel(true); 
      } 
     } 

的.cs

protected void MainMenu_OnItemClick(object sender, RadMenuEventArgs e) 
     { 
      if (e.Item.Text == "About") 
      { 
       AboutMenu.VisibleOnPageLoad = true; 
      } 
     } 

窗口的作品,但它只要加載頁面加載和這就是我認爲行AboutMenu.VisibleOnPageLoad = true進場和造成的錯誤,但當我拿出臨時t線它根本不會顯示。

回答

3

而不是使用VisibleOnPageLoad嘗試使用以下代碼打開itemclick上的窗口。

protected void MainMenu_OnItemClick(object sender, RadMenuEventArgs e) 
    { 
      if (e.Item.Text == "About") 
      { 
string script = "function f(){$find(\"" + RadWindow1.ClientID + "\").show(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);"; 
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", script, true); 

      } 
    } 
0

或者,只需使用菜單的OnCLientItemClicking事件來打開RadWindow並取消回發。但是你需要修復你的JS代碼,因爲這些爭論是在當前函數的上下文中。此外,除非您製作了自己的ClientID陣列,否則對RW的引用可能會中斷。

function OnClientItemClicking(sender, eventArgs) { 
     if (eventArgs.get_item().get_text() == "About") { 
      var radwindow = window.$find(<%=AboutMenu.ClientID%>); 
      radwindow.show(); 
      eventArgs.set_cancel(true); 
     } 
    }