将链接列添加到ASP.NET GridView
我想输出可点击的新闻标题列表。到目前为止,我可以让它打印出标题列表,因为我在VS2010的designer视图中拖放了NewsHeading表。您认为我应该如何使列表元素可单击?我查找了一个URL属性,但没有看到它。我需要用a将链接列添加到ASP.NET GridView,asp.net,gridview,hyperlink,Asp.net,Gridview,Hyperlink,我想输出可点击的新闻标题列表。到目前为止,我可以让它打印出标题列表,因为我在VS2010的designer视图中拖放了NewsHeading表。您认为我应该如何使列表元素可单击?我查找了一个URL属性,但没有看到它。我需要用a
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display.">
<Columns>
<asp:BoundField DataField="NewsHeadline" HeaderText="NewsHeadline"
SortExpression="NewsHeadline" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:ConnectionString1.ProviderName %>"
SelectCommand="SELECT [NewsHeadline] FROM [NewsTable]"></asp:SqlDataSource>
</form>
您需要将列类型从BoundColumn更改为Hyperlink列
<asp:hyperlinkfield headertext="NewsHeadline"
datatextfield="NewsHeadline"
datanavigateurlfield="NewsURL"
datanavigateurlformatstring="http://{0}" />
除了进行此更改外,您还需要确保选择了URL或可以用于创建新闻文章链接的内容。在上面的示例中,我假设URL是可以从SQL源获取的。如果它是一个ID,只需像这样键入url的其余部分。。。“~/MyNewsPage.aspx?NewsID={0}”…您需要使用超链接字段而不是边界字段,如下所示:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display.">
<Columns>
<asp:HyperLinkField HeaderText="NewsHeadline" SortExpression="NewsHeadline" DataTextField="NewsHeadline" NavigateUrl="..." />
</Columns>
改用:
<asp:hyperlinkfield datatextfield="NewsHeadline"
datanavigateurlfields="NewsID"
datanavigateurlformatstring="~\newsdetails.aspx?Id={0}" />
超链接字段将如其他人所指出的那样非常有效。但是,如果希望整行都可以单击,可以使用自定义服务器控件来实现SO文章中建议的GridView 查看我发布的关于实现它的问题
这只是另一种选择。类似的内容在VisualStudio2010中作为解决方案将非常有效
GridView
网格视图上
,然后单击右上角显示的箭头SELECT News\u Id,newsdheadline FROM newsdheadline
SqlDataSource
,它现在是GridView
的DataSource
GridView
的代码所在位置,并替换为以下代码
你们都准备好了。这将创建一个包含所有标题的超链接列表,其中包含一个到新闻详细信息的动态生成的唯一链接。aspx
页面补充了我们使用主键构建的查询字符串,该查询字符串对应于新闻标题表中的每个新闻标题
条目
然后,当您加载newsdetails.aspx
页面时,您可以使用:Request.QueryString[“News\u Id”]
从URL获取News\u Id
值,并使用该值查询数据库,以获取有关所单击的特定newsdheadline
的详细信息。然后,您可以在网页上显示该查询的结果。我必须使用DataNavigateEurlfields,这是.NET 4吗?
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="Id" DataSourceID="SqlDataSource1">
<Columns>
<asp:HyperLinkField
DataNavigateUrlFields="News_Id"
DataNavigateUrlFormatString="~\newsdetails.aspx?News_Id={0}"
DataTextField="NewsHeadline"
HeaderText="News HeadLines"
SortExpression="NewsHeadline" />
</Columns>
</asp:GridView>