我在我的项目中使用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
正在发挥作用并导致错误,但当我取出该行时,它根本不会显示。
答案 0 :(得分: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);
}
}
答案 1 :(得分: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);
}
}