方案
我想在不同的页面上点击不同的链接时显示ajax tab-container控件的特定选项卡。
澄清:链接在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>
最终修改
我通过使用查询字符串参数而不是会话变量解决了我的问题。
答案 0 :(得分:1)
我想,你必须尝试这个。
在page1.aspx,当点击链接时,你必须在变量
中设置链接选择值protected void lnkUser_Click(object sender, EventArgs e)
{
Session["LinkSelection"] = "lnkUser";
}
protected void lnkCustomer_Click(object sender, EventArgs e)
{
Session["LinkSelection"] = "lnkCustomer";
}
在page2.aspx上,在Page_Load
事件上,您必须检查会话varribale值,然后根据它,您必须在Ajax选项卡中显示true / false
if (Session["LinkSelection"] == "lnkUser")
{
//put your User tab Active/Enabled logic here
}
else if (Session["LinkSelection"] == "lnkCustomer")
{
//put your Customer tab Active/Enabled logic here
}
您也可以使用Switch Case,而不是使用If else。这是示例代码。
如果您不想使用Session变量,则使用page2.aspx(例如Response.Redirect("page2.aspx?LinkSelection=lnkUser")
)传递querystring中的值。您还可以将加密的查询字符串发送到page2,您可以在其中解密并处理