根据点击的链接显示不同的标签

时间:2014-11-18 12:57:16

标签: javascript c# jquery ajaxcontroltoolkit

方案

我想在不同的页面上点击不同的链接时显示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>

最终修改

我通过使用查询字符串参数而不是会话变量解决了我的问题。

1 个答案:

答案 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,您可以在其中解密并处理