0

我在我的项目中使用 Telerik RadControls,并且有一个菜单,其中有一个“关于”按钮。当我单击“关于”按钮时,会弹出一个描述应用程序的窗口。问题是如果我刷新页面或导航到另一个页面然后回到第一页,窗口会自动弹出。

目标是仅在用户单击“关于”按钮时弹出该窗口。

这是我用来获取该窗口的代码:

<!--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起作用并导致错误的地方,但是当我取出该行时它根本不会显示。

4

2 回答 2

3

尝试使用以下代码在 itemclick 上打开窗口,而不是使用VisibleOnPageLoad 。

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);  

            }
  }
于 2013-11-05T04:02:22.983 回答
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);
         }
     }
于 2013-11-05T15:50:40.623 回答