使用Telerik嵌套在另一个选项卡中的选项卡上的FindTabByUrl

时间:2016-10-12 18:31:30

标签: tabs telerik nested

我有一个RadTabStrip用作菜单(标签充当链接),点击一些标签打开相关链接的子菜单。

我有以下代码来突出显示当前正在访问的标签:

母版页代码隐藏

    protected void Page_Load(object sender, EventArgs e)
    {
            RadTabStrip tabControl = FindControl("radTabMenu"); //Pseudo
            RadTab currentTab = tabControl.FindTabByUrl(Request.Url.PathAndQuery);
            if (currentTab != null) currentTab.Selected = true;
    }

母版页

 <telerik:RadTabStrip ID="radTabMenu" runat="server">
     <Tabs>
         <telerik:RadTab Text="Home" NavigateUrl="~/" />  <!-- Loads Default.aspx -->
         <telerik:RadTab Text="Menu Item" NavigateUrl="~/MenuItem.aspx" />
         <telerik:RadTab Text="Top Level Nav">
             <Tabs>
                 <telerik:RadTab Text="Lower Menu Item 1" />
                 <telerik:RadTab Text="Lower Menu Item 2" NavigateUrl="~/Location/Page.aspx" />
             </Tabs>
         </telerik:RadTab>
     </Tabs>
 </telerik:RadTabStrip>

在页面加载时,如果我单击“菜单项”选项卡以加载MenuItem页面,则RadTabs会正确突出显示该选项卡。但是,我不确定如何确保子标签正确突出显示。

我正在尝试这个,但我有点卡住了:

            RadTabStrip tabControl = FindControl("radTabMenu"); //Pseudo
            RadTab currentTab = tabControl.FindTabByUrl(Request.Url.PathAndQuery);
            if (currentTab != null)
                currentTab.Selected = true;
            else
            {
                string dir = Request.Url.GetComponents(UriComponents.Path, UriFormat.SafeUnescaped);
                currentTab = tabControl.FindTabByValue(dir);

                if (currentTab != null)
                    //Trying to findByUrl isn't possible here because the parent tab doesn't have that method.
            }

是否有一个很好的替代方法可以通过网址查找,或者更快的方法来到达父级和子级标签?

编辑:添加图片以阐明我在页面导航后想要实现的目标

Lower Menu Item 2 is highlighted after being clicked on, and (theoretical) page /TopLevelNav/LowerMenuItem2.aspx is loaded

2 个答案:

答案 0 :(得分:0)

FindTabBy *方法可在RadTabStrip或RadTabCollection级别使用。 这就是为什么,一旦找到父选项卡,就无法在其上调用FindTabBy *方法,因为您需要在其.Tabs属性上调用该方法。

请参阅以下示例:

 var parent = radTabMenu.FindTabByText("Top Level Nav");
 parent.Selected = true;

 var child = parent.Tabs.FindTabByText("Lower Menu Item 1");
 child.Selected = true;

答案 1 :(得分:0)

重新审视这一点,在我的团队决定删除嵌套标签菜单之后,我发现这些标签会被网址选中。

我的问题是父标签不会被打开并被选中,但是通过文档挖掘使我使用tab.Select Parents(),它在层次结构中选择所有导致当前所选标签的父母。< / p>

现在我发现它似乎非常明显。