我将此模板字段添加到gridview列,并且需要从后面的代码中的列访问值(电子邮件地址)。我最初添加了一个DataKeyNames,但这只会拉出第一个记录值。在循环运行时似乎没有为每条记录选择值。
我想将电子邮件添加到标签中,以便我可以使用FindControl语句,除非有人知道更简单的方法。我无法在标签中显示电子邮件超链接。除了无法阅读电子邮件地址外,在没有标签标签的情况下正常工作。
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<a href="mailto:<%# Eval("email") %>"><%#Eval("email")%> </a>
</ItemTemplate>
</asp:TemplateField>
尝试过变种:
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<asp:Label ID="Email99" runat="server" <a href="mailto:<%# Eval("email") %>"><%#Eval("email")%> </a> ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
在内联代码中不显示任何错误,只需报告: 分析器错误消息:服务器标签格式不正确。
更新:这是将HyperLinkField添加到列
后的ASP<Columns>
<asp:BoundField DataField="usersLogonName" HeaderText="Logon Name" >
<ControlStyle Width="50px" />
</asp:BoundField>
<asp:BoundField DataField="userDBLanguage" HeaderText="Language" >
<ControlStyle Width="30px" />
</asp:BoundField>
<asp:HyperLinkField runat="server" DataNavigateUrlFields="email" DataNavigateUrlFormatString="mailto:{0}" DataTextField="email" />
<asp:BoundField DataField="LastActivityDate" HeaderText="Last Activity" />
</Columns>
这一行代码读取James Johnson提供的模板化字段解决方案的值......
Dim emailAdd As String = GridView4.DataKeys(dr.RowIndex)("Email")
如果这个帖子被解锁,他值得称赞。
这是一个使用VB.net的ASP页面
感谢您的帮助。
答案 0 :(得分:3)
使用HyperLinkField
:
<asp:GridView ID="GridView1" runat="server" ...>
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="email" DataNavigateUrlFormatString="mailto:{0}" DataTextField="email" />
</Columns>
</asp:GridView>
如果您遇到上述问题,可以使用带有TemplateField
控件的HyperLink
:
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<asp:HyperLink runat="server" Text='<%# Eval("email") %>' NavigateUrl='<%# string.Format("mailto:{0}", Eval("email"))%>' />
</ItemTemplate>
</asp:TemplateField>