动态添加链接到模板字段

时间:2013-04-09 02:54:12

标签: asp.net html vb.net datagrid databound

我需要替换每个数据绑定项的链接。我已经检查了datarow的数据绑定事件。问题是我无法控制链接显示的位置。我试图远离javascript并将其主要保留在代码背后。下面是我的asp代码和我背后的代码。我也想尝试保持尽可能相同,而不是更改为html模板项。使用的过程如下。

我有一个自定义对象,其中包含博客条目的所有字段和数据。这些项目放入一个列表,然后提供给数据网格。

   <asp:GridView ID="grdRecentNews" runat="server" AutoGenerateColumns="False" DataKeyNames="Key"
                            GridLines="None" PageSize="4" ShowHeader="False"
                            AllowPaging="True">
                            <PagerSettings Visible="False" />
                            <Columns>
                                <asp:TemplateField>
                                    <ItemTemplate>
                                        <blockquote>
                                           <%-- <strong><a href=**"News.aspx"**>--%>
                                            <strong><a href="News.aspx">
                                                <%#Eval("NewsDesc")%></a></strong>
                                            <br />
                                            <span class="italic">
                                                <%#Eval("NewsDate")%></span>
                                        </blockquote>
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>

这是我在Databound事件中的代码,问题是我只想为Rss对象的某个字段提供链接。如上所述。我想用rssobject的link属性替换添加到datagrid的每个项目的News.aspx。

  Protected Sub grdRecentNews_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdRecentNews.RowDataBound

        If e.Row.DataItem IsNot Nothing AndAlso e.Row.DataItem.ToString = "RssEntry" Then
            Dim curItem As RssEntry = CType(e.Row.DataItem, RssEntry)
            e.Row.Attributes.Add("href", curItem.Link) 'data-url
        End If

    End Sub

1 个答案:

答案 0 :(得分:0)

我找到了一种插入&lt;%#Eval%&gt;的方法声明我要改变的属性。我指向rssobject的正确属性,以及它的工作原理。

<Columns>
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <blockquote>
                                        <strong><a href='<%#Eval("Link")%>'>
                                            <%#Eval("NewsDesc")%></a></strong>
                                        <br />
                                        <span class="italic">
                                            <%#Eval("NewsDate")%></span>
                                    </blockquote>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>