RadTabStrip是否可以在MasterPage中使用?单击时,选项卡不会显示为选中状态。
步骤:
创建一个新的Web应用程序项目。默认情况下,它包含母版页(Site.Master)中的“主页”和“关于”选项卡。选项卡是asp:MenuItem控件。
注释掉asp:Menu控件并将RadTabStrip拖到其位置。添加两个RadTabs。运行应用程序时,每个选项卡都按预期工作 - 单击时似乎已选中。
现在将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'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 :(得分: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 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;
}
}
答案 1 :(得分: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>