RadTabStrip, похоже, не выбран RadTab - Почему? - PullRequest
2 голосов
/ 09 марта 2012

Работает ли RadTabStrip в MasterPage? При нажатии вкладки не отображаются.

Шаги:

  1. Создание нового проекта веб-приложения. По умолчанию он содержит вкладки «Главная страница» и «О программе» внутри главной страницы (Site.Master). Вкладки являются элементами управления asp: MenuItem.

  2. Закомментируйте элемент управления asp: Menu и перетащите RadTabStrip на его место. Добавьте два RadTabs. При запуске приложения каждая вкладка работает должным образом - при нажатии она отображается.

  3. Теперь добавьте NavigateUrls к каждому RadTab, указывающему на страницы «~ Default.aspx» и «~ About.aspx». При запуске приложения вкладки не отображаются при нажатии (хотя отображается правильная страница).

    Что происходит? Как я могу сделать эту работу?

Обновление: вот как я изменил код по умолчанию в Site.Master ...

<div>
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
    </telerik:RadScriptManager>
</div>

        <%--<div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                <Items>
                    <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
                    <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
                </Items>
            </asp:Menu>
        </div>--%>

    <div>
        <telerik:RadTabStrip ID="RadTabStrip1" runat="server">
            <Tabs>
                <telerik:RadTab runat="server" Text="Root RadTab1" NavigateUrl="~/Default.aspx">
                </telerik:RadTab>
                <telerik:RadTab runat="server" Text="Root RadTab2" NavigateUrl="~/About.aspx" >
                </telerik:RadTab>
            </Tabs>
        </telerik:RadTabStrip>
    </div>

Ответ ...

Ответ Бояна Скрчевски привел меня к этому . Я добавил этот код в событие Page_Load главной страницы, и он работает:

using Telerik.Web.UI;

namespace WebApplication1
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RadTab currentTab = RadTabStrip1.FindTabByUrl(Request.Url.PathAndQuery);
            if (currentTab != null) currentTab.Selected = true;
        }
    }
}

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Я думаю, что вам также нужно добавить runat="server" к элементу RadTab, если вы хотите использовать его таким образом.Например:

<telerik:RadTab Text="Home" NavigateUrl="Default.aspx" runat="server">
</telerik:RadTab>

Вы также можете использовать ContentUrl в соответствующем telerik:RadPageView для навигации на стороне клиента.Пример:

<telerik:RadPageView ID="RadPageView1" runat="server" ContentUrl="Default.aspx">

ОБНОВЛЕНИЕ (в вашем обновлении): Когда вы добавляете runat="server" в RadTab, это вызывает обратную передачу.При обратной передаче элемент управления не может определить, какая вкладка выбрана, даже если он переходит на указанную страницу.Вот как это решается в примере Telerik :

        protected void Page_Load(object sender, System.EventArgs e)
        {
            string urlWithSessionID = Response.ApplyAppPathModifier(Request.Url.PathAndQuery);
            RadTab tab = RadTabStrip1.FindTabByUrl(urlWithSessionID);
            if (tab != null)
            {
                tab.SelectParents();
                tab.PageView.Selected = true;
            }
        }
0 голосов
/ 10 марта 2012

Единственное отличие, которое я вижу в вашем коде по сравнению с моей главной страницей, - это SelectedIndex = "0" на RadTabStrip и Selected = "true" на одной из вкладок Rad:

<telerik:RadTabStrip ID="RadTabStrip1" runat="server" SelectedIndex="0">
    <Tabs>
        <telerik:RadTab runat="server" Text="Root RadTab1" NavigateUrl="~/Default.aspx" Selected="true">
        </telerik:RadTab>
        <telerik:RadTab runat="server" Text="Root RadTab2" NavigateUrl="~/About.aspx" >
        </telerik:RadTab>
     </Tabs>
 </telerik:RadTabStrip>
...