如何将GridView中的Username列转换为电子邮件超链接(mailto)并使用GridView1_DataBound进行单击?

时间:2012-02-12 06:47:04

标签: c# asp.net

我开发了一个基于网络的培训矩阵,显示了公司所在部门每个部门的每位员工的培训记录。矩阵将显示许多列,例如员工姓名,用户名,职位等...我现在想要的是使每个员工的用户名可以点击,这意味着当管理员点击它时,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 = 
    }

1 个答案:

答案 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行可以直接为您提供数据。