【问题标题】:How to convert the Username column in the GridView an email hyperlink (mailto) and to be clickable using GridView1_DataBound?如何将 GridView 中的用户名列转换为电子邮件超链接 (mailto) 并使用 GridView1_DataBound 进行点击?
【发布时间】:2012-02-13 01:40:49
【问题描述】:

我开发了一个基于 Web 的培训矩阵,其中显示了公司部门中每个部门的每个员工的培训记录。该矩阵将显示许多列,例如员工姓名、用户名、职位……等等。我现在想要的是让每个员工的用户名都可以点击,这意味着当管理员点击它时,Outlook 将被打开使用他的电子邮件,管理员将能够向他发送消息。在我的公司,这是可能的,因为每个员工的电子邮件主要是:username@companyName.com 那怎么做呢?

顺便说一句,员工的用户名将使用存储过程从数据库中检索,那么我如何能够将用户名转换为电子邮件并同时使用 Code-Behind 进行点击?

用户列是 GridView 中的第 4 列

代码隐藏:

protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
        {
                HyperLinkField hlink = GridView1.Columns[3] as HyperLink;
                hLink.DataNavigateUrlFormatString = 
    }

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您可以使用 TemplateField 或 BoundField 使该字段成为自己的字段,而不是在每一行后面的代码上(这不是好主意,代码太多,不是好习惯)。
    因此,您可以使用 TemplateField 为您的电子邮件创建一个字段,例如:

    <asp:TemplateField HeaderText="e-mail" >
        <ItemTemplate >
            <a href="mailto:<%#Eval("email")%>@company.com"><%#Eval("email")%></a> 
        </ItemTemplate>
    </asp:TemplateField>
    

    或使用DataFormatString,您可以创建如下字段:

    <asp:BoundField DataField="email" HeaderText="e-mail" 
       DataFormatString="<a href="mailto:{0}@company.com">{0}</a>" 
        HtmlEncode="false"              
         HtmlEncodeFormatString="false" />
    

    数据

    您说名称是使用存储过程查找的,您可以使 SQL 选择此列表以包含此名称,而不是在每一行都调用 SQL 来查找名称。一条 SQL 就可以直接给你数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多