2017-10-28 54 views
1

我想通过中继器内的会话传输超链接的文本。但我无法想到这样做的逻辑。我的转发器在该下拉菜单中生成链接,我想获取链接中显示的文本并将其传递到另一页Sectors.aspx。这是我迄今所做的:C# - 通过中继器内的会话传输超链接的文本

---编辑---

我想要的链接被点击的时候,那就是在链接的文本被传递到其他页面。例如,菜单有两个链接,APPLE和BANANA。当用户点击APPLE时,我希望下一页Sectors.aspx知道用户点击APPLE而不是其他选项。

ASPX页面:

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 

     <div class="dropdown"> 
      <button class="dropbtn">Setor</button> 
      <div class="dropdown_content"> 
       <asp:Repeater ID="sectors_menu" runat="server"> 
        <ItemTemplate> 
         <asp:HyperLink id="hyperlink1" NavigateUrl="Sectors.aspx" Text='<%#((System.Data.DataRowView)Container.DataItem)["sector"] %>' runat="server"></asp:HyperLink> 
        </ItemTemplate> 
       </asp:Repeater> 
      </div> 
     </div> 

</asp:Content> 

代码隐藏

public partial class _Default : System.Web.UI.Page 
    { 
     MySqlConnection mysql_connection = new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString); 
     string mysql_string; 
     MySqlDataAdapter mysql_data_adapter; 

     public void Page_Load(object sender, EventArgs e) 
     { 
      Sector_label(); 
     } 

     public void Sector_label() 
     { 
      mysql_string = "SELECT * FROM employees GROUP BY sector"; 
      mysql_data_adapter = new MySqlDataAdapter(mysql_string, mysql_connection); 

      DataTable data_table = new DataTable(); 
      mysql_data_adapter.Fill(data_table); 
      DataView data_view = new DataView(data_table); 

      sectors_menu.DataSource = data_view; 
      sectors_menu.DataBind(); 

      for (int count = 0; count < sectors_menu.Items.Count; count++) 
      { 
       var test = (HyperLink)sectors_menu.Items[count].FindControl("hyperlink1"); 

       Session["session_hyperlink"] = test.Text; 

       // Debug.WriteLine(test.Text); 
      } 
     } 
    } 
+0

你想''从'data_view领域sector'的文本,但试图从转发器的超级链接得到它。为什么你不循环'data_table'并从那里获取呢? – zey

+0

@zey我编辑了我的帖子。我认为它更清楚。 –

回答

1

你可以添加文字作为NavigateUrl的参数:

<ItemTemplate> 
    <asp:HyperLink id="hyperlink1" NavigateUrl='<%# "Sectors.aspx?sector=" + Server.UrlEncode(((System.Data.DataRowView)Container.DataItem)["sector"]).ToString() %>' Text='<%#((System.Data.DataRowView)Container.DataItem)["sector"] %>' runat="server"></asp:HyperLink> 
</ItemTemplate> 

然后,Sectors.aspx可以通过“部门”参数检索:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string sector = Request.Params["sector"]; 
} 

id="hyperlink1"参数看起来腥,虽然。你不希望你所有的超链接都有相同的ID。

0

只需更换hyperlink标签与此代码,

<asp:HyperLink runat="server" Navigateurl='<%#"Sectors.aspx?mySector="+ Eval("sector") %>' 
        Text='<%#((System.Data.DataRowView)Container.DataItem)["sector"] %>' />