2013-11-04 95 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); 
     } 
    }