【问题标题】:Accessing a hyperlink in a gridview column访问 gridview 列中的超链接
【发布时间】:2012-05-04 06:37:41
【问题描述】:

我将此模板字段添加到 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 提供的 Templated Field 解决方案中读取值...

 Dim emailAdd As String = GridView4.DataKeys(dr.RowIndex)("Email")

如果这个帖子被解锁,他值得称赞。

这是一个使用 VB.net 的 ASP 页面

感谢您的帮助。

【问题讨论】:

  • 他们为我们解锁了帖子。我想你现在可以接受了。

标签: asp.net vb.net gridview


【解决方案1】:

使用HyperLinkField

<asp:GridView ID="GridView1" runat="server" ...>
    <Columns>
        <asp:HyperLinkField DataNavigateUrlFields="email" DataNavigateUrlFormatString="mailto:{0}" DataTextField="email" />
    </Columns>
</asp:GridView>

如果您遇到上述问题,您可以使用带有HyperLink 控件的TemplateField

<asp:TemplateField HeaderText="Email"> 
    <ItemTemplate>
        <asp:HyperLink runat="server" Text='<%# Eval("email") %>' NavigateUrl='<%# string.Format("mailto:{0}", Eval("email"))%>' />
    </ItemTemplate>
</asp:TemplateField>

【讨论】:

  • 好的,我修复了那部分,但我原来的问题仍然存在。在后面的代码中,我需要在遍历行时读取超链接中的电子邮件地址。如何获取该电子邮件地址值?
  • 使用datakey集合,可以通过行索引获取email地址。给我一秒钟,我会更新我的例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
相关资源
最近更新 更多