【发布时间】:2014-11-18 12:57:16
【问题描述】:
场景
当在不同页面上单击不同链接时,我想显示 ajax 选项卡容器控件的特定选项卡。
澄清一下:链接在 page1.aspx 上,而 ajax 选项卡容器在 page2.aspx 上。
所有链接仅重定向到 page2.aspx。
但我需要根据上一页(page1.aspx)点击的不同链接显示不同的标签(在page2.aspx上)。
我在寻找什么
我认为我可以按照以下伪代码行做一些事情:
LinkButton lnk1 = (LinkButton)PreviousPage.FindControl("btnLink1");
if (lnk1.Click)
{
TabContainer1.ActiveTab = tab1;
}
这个想法是,如果点击了某个链接,则应该显示一个特定的选项卡。
我会把它放在 page2.aspx 的 PageLoad 事件中。
如何实现服务器端(c#)?或者我需要一个客户端(Javascript)方法吗?
我的尝试
我已尝试按照其中一个答案的建议使用会话变量,但点击事件未触发。
这是我在点击每个链接按钮时将变量存储在 page1.aspx 上的方法。
protected void editPosition_Click(object sender, EventArgs e)
{
Session["LinkSelection"] = "lnkPosition";
}
protected void editRoom_Click(object sender, EventArgs e)
{
Session["LinkSelection"] = "lnkRoom";
}
然后在 PageLoad 我对 page2.aspx 进行检查
if (Session["LinkSelection"].ToString() == "lnkPosition")
{
TabContainer1.ActiveTab = PositionsTab;
}
if (Session["LinkSelection"].ToString() == "lnkRoom")
{
TabContainer1.ActiveTab = RoomsTab;
}
链接的标记如下:
<asp:LinkButton ID="editPosition" runat="server" OnClick="editPosition_Click"
Text="Position" ClientIDMode="Static" ></asp:LinkButton>
<asp:LinkButton ID="editRoom" runat="server" Text="Room" OnClick="editRoom_Click"
ClientIDMode="Static" ></asp:LinkButton>
最终编辑
我通过使用查询字符串参数而不是会话变量解决了我的问题。
【问题讨论】:
-
据我了解,根据链接,您希望在不同页面上显示/隐藏标签。因此,您必须在回发中存储您的链接选择值,然后基于您必须显示不同的选项卡。要存储链接选择,您可以使用加密的 QueryString 或 Session 变量。
-
谢谢@Piyush。也许我的问题不清楚。每个链接的url总是一样的,但是ajax控件的tab需要不一样。
-
你想要一样,我在上面的评论中解释了什么?
-
你是对的。我已经接受了你的回答,谢谢。
-
伟大的@Dura,它帮助你解决了你的问题。干杯
标签: javascript c# jquery ajaxcontroltoolkit