【问题标题】:Anchor Link in DataGrid ItemTemplateDataGrid ItemTemplate 中的锚链接
【发布时间】:2011-10-15 05:42:54
【问题描述】:

我在 DataGrid 中有以下标记:

<itemtemplate>
    <a href='~/File.aspx?item=<%# DataBinder.Eval(Container.DataItem, "ItemID").ToString() %>'
        runat='server'><%# DataBinder.Eval(Container.DataItem, "Title").ToString() %>
    </a>
</itemtemplate>

但它正在呈现以下 HTML:

"> 我的链接

我做错了什么?

【问题讨论】:

  • 这是 gridview 还是 DataGrid?
  • 这是一个 DataGrid,而不是一个 GridView。
  • 请务必参考ASP.Net中的HyperLinkField

标签: asp.net datagrid itemtemplate


【解决方案1】:

你必须附加它

<a href='~/File.aspx?item=' + <%# DataBinder.Eval(Container.DataItem, "ItemID").ToString() %>

否则如果你使用超链接,那就很容易了。例如

<ItemTemplate>
    <asp:HyperLink ID="HyperLink1" runat="server"
    NavigateUrl='<%#Eval("ItemID", "~/File.aspx?item={0}")%>'
    Text='<%# DataBinder.Eval(Container.DataItem, "Title").ToString() %>'></asp:HyperLink>
 </ItemTemplate>

【讨论】:

  • 我没有看到链接文本,那么结束 '>' 呢?
  • 您现在可以看到商品 ID 了吗?
  • 我现在可以正确渲染,除非我添加 runat="server" 属性时它会导致页面崩溃:' runat='server'>
  • 它没有解析到根,链接文本字面意思是:DataBinder.Eval(Container.DataItem, "Title").ToString()
  • @Muhammed:+1 用于使用 eval 重载。我时不时忘记它:)
【解决方案2】:

试试这个。

<asp:TemplateColumn>
    <ItemTemplate>
        <a id="A1" runat='server' href='<%# "~/File.aspx?item=" + Eval("ID")%>'>
            <%# Eval("Job") %>
        </a>
    </ItemTemplate>
</asp:TemplateColumn>

【讨论】:

  • @IrishChieftian:漫长的一天......我忘了两者都有模板字段。该代码在 DataGrid 上也可以正常工作。测试过。
猜你喜欢
  • 2012-12-11
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多