如何将GridView中的用户名列转换为电子邮件超链接(mailto),并使用GridView1_DataBound进行

本文关键字:mailto 进行 DataBound GridView1 超链接 电子邮件 GridView 用户 转换 | 更新日期: 2023-09-27 18:24:27

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

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

用户列是GridView 中的第4列

代码隐藏:

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

如何将GridView中的用户名列转换为电子邮件超链接(mailto),并使用GridView1_DataBound进行

您可以使用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可以直接为您提供数据。