2

RadTabStrip 在 MasterPage 中是否工作?单击时选项卡不会显示为选中状态。

脚步:

  1. 创建一个新的 Web 应用程序项目。默认情况下,它在母版页 (Site.Master) 中包含主页和关于选项卡。选项卡是 asp:MenuItem 控件。

  2. 注释掉 asp:Menu 控件并在其位置拖动一个 RadTabStrip。添加两个 RadTab。当您运行应用程序时,每个选项卡都按预期工作——单击时它似乎被选中。

  3. 现在将 NavigateUrls 添加到指向“~Default.aspx”和“~About.aspx”页面的每个 RadTab。当应用程序运行时,单击时似乎未选择选项卡(尽管显示了正确的页面)。

    这是怎么回事?我怎样才能使这项工作?

更新:这是我更改 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 的回答让我想到了这个。我将此代码添加到母版页的 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;
        }
    }
}
4

2 回答 2

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">

更新(关于您的更新): 当您添加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;
            }
        }
于 2012-03-09T20:16:39.357 回答
0

与我的母版页相比,我在您的代码中看到的唯一区别是 RadTabStrip 上的 SelectedIndex="0" 和 Rad 选项卡之一上的 Selected="true" :

<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>
于 2012-03-09T20:26:59.670 回答