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