Окно Telerik автоматически открывается после каждого обновления страницы

Я использую 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 вступает в игру и вызывает ошибку, но когда я убираю эту строку, она вообще не отображается.


person CSharpDev4Evr    schedule 04.11.2013    source источник


Ответы (2)


Вместо использования 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);  

            }
  }
person Saritha.S.R    schedule 05.11.2013

Или просто используйте событие OnCLientItemClicking меню, чтобы открыть RadWindow и отменить обратную передачу. Но вам нужно будет исправить код JS, потому что аргументы находятся в контексте текущей функции. ТАКЖЕ, ссылка на RW может не работать, если вы не создали свой собственный массив ClientID.

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