【问题标题】:Getting Text property of hyperlink clicked in list view?获取在列表视图中单击的超链接的文本属性?
【发布时间】:2012-04-23 16:36:54
【问题描述】:

项目列表(超链接)显示在查询检索到的列表视图中。在点击时,它会重定向到另一个页面,我需要使用它的名称来获取该项目的数据,该名称是该项目的文本(超链接)。如何访问被点击项目的文本属性(名称)?

【问题讨论】:

    标签: c# asp.net sql


    【解决方案1】:

    如果您确实点击了一个超链接,该超链接重定向到另一个页面,那么您将无法获得该信息。

    唯一的方法是在查询字符串中包含您需要的信息,然后在下一页解析查询字符串。

    但是,如果您将表单发布到另一个页面,并且您的超链接实际上是一个输入,那么您的信息将在发布数据中可用。

    如果您的超链接实际上是一个服务器控件,则有很多可能性。

    查看一些代码可能会有所帮助。

    好的,如果这是你的代码:

    <td> 
        <asp:Hyperlink ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' NavigateUrl="~/anotherpage.aspx"/> 
    </td>
    

    您可以做一些事情。首先,您可以将asp:Hyperlink 更改为asp:LinkButton 添加点击事件并删除NavigateUrl 属性:

    <td> 
        <asp:LinkButton ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' OnClick="NameLabel_Click"/> 
    </td>    
    

    现在,使用事件处理程序来做你需要的事情:

        //Use querystring
        protected void NameLabel_Click(object sender, EventArgs e)
        {
            var link = sender as LinkButton;
            Response.Redirect(String.Format("anotherpage.aspx?name={0}", link.Text));
        }
    
        //Use session
        protected void NameLabel_Click(object sender, EventArgs e)
        {
            var link = sender as LinkButton;
            Session["name"] = link.Text;
            Response.Redirect("anotherpage.aspx?");
        }
    

    然后,在您的着陆页的Page_Load 事件中,您可以这样做:

    //Session
    var name = Session["name"];
    
    //Querystring
    var name = Request.QueryString["name"];
    

    【讨论】:

    • 你想看什么代码?到目前为止,我还没有编写此任务的代码,因为我没有文本,我可以向您展示通过 SqlDataSource 在列表视图中检索数据的代码。我明确地将其中项目的标签属性转换为超链接。像这样
    • 是的,我需要将信息解析到下一页,但是由于它是该超链接的文本,我究竟如何获得该信息?
    • 尝试类似
    猜你喜欢
    • 2018-06-26
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多