2012-03-09 12 views
2

Работает ли RadTabStrip в MasterPage? При нажатии вкладки не отображаются.У RadTabStrip нет выбора RadTab - Почему?

Шаги:

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

  2. Комментировать outp: Управление меню и перетащить RadTabStrip на свое место. Добавьте два RadTabs. Когда вы запускаете приложение, каждая вкладка работает так, как ожидалось, - она, по-видимому, выбирается при нажатии.

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

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

Update: Вот как я изменил код по умолчанию в 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> 

Ответ ...

Bojan Skrchevski's ответ led me to this. Я добавил этот код события 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; 
     } 
    } 
} 
+0

вы можете оставить часть вашего кода конкретно ваш TabStrip –

+0

RadTab вызывает постбэк ... см мой ответ ниже – TheBoyan

ответ

1

Я думаю, что вы также должны добавить 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"> 

UPDATE (на вашем обновлении): При добавлении runat="server" к RadTab то это вызывает постбэк. При обратной передаче управление не может определить, какая вкладка выбрана, даже если она переместится на указанную страницу. Вот как это решается в Telerik example:

 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

Вот так! Ваш ответ привел меня к следующему: http://www.telerik.com/community/forums/aspnet-ajax/tabstrip/selected-tab-not-highlighted.aspx – DeveloperDan

+0

@DeveloperDan - Рад, что я мог помочь;) – TheBoyan

0

Единственное различие я вижу в вашем коде по сравнению с моей главной странице SelectedIndex = «0» на RadTabStrip и Selected = «истинный» на одном из 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> 
+0

С этими изменениями отображается только первая вкладка, даже после нажатия второй вкладки. Странный. – DeveloperDan

Смежные вопросы