我开发了一个基于网络的培训矩阵,显示了公司所在部门每个部门的每位员工的培训记录。矩阵将显示许多列,例如员工姓名,用户名,职位等...我现在想要的是使每个员工的用户名可以点击,这意味着当管理员点击它时,Outlook将被打开用他的电子邮件和管理员将能够向他发送消息。在我的公司,这是可能的,因为每个员工的电子邮件主要是:username@companyName.com所以如何做到这一点?
顺便说一下,将使用storedprocedure从数据库中检索员工的用户名,那么我将如何使用Code-Behind将用户名转换为电子邮件并同时点击? / p>
用户列是GridView中的第4列
的代码隐藏: 的
protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
{
HyperLinkField hlink = GridView1.Columns[3] as HyperLink;
hLink.DataNavigateUrlFormatString =
}
答案 0 :(得分:0)
你可以使用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" />
您说使用storedprocedure查找Name,您可以使此列表的SQL选择包含此Name,而不是在每一行上调用SQL来查找名称。一条SQL行可以直接为您提供数据。