将链接列添加到ASP.NET GridView

将链接列添加到ASP.NET GridView,asp.net,gridview,hyperlink,Asp.net,Gridview,Hyperlink,我想输出可点击的新闻标题列表。到目前为止,我可以让它打印出标题列表,因为我在VS2010的designer视图中拖放了NewsHeading表。您认为我应该如何使列表元素可单击?我查找了一个URL属性,但没有看到它。我需要用a

我想输出可点击的新闻标题列表。到目前为止,我可以让它打印出标题列表,因为我在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中作为解决方案将非常有效

  • 在VS中的网页设计器选项卡中创建
    GridView
  • 将鼠标悬停在
    网格视图上
    ,然后单击右上角显示的箭头
  • 转到“选择数据源”并选择“新建数据源…”
  • 创建到数据库的连接字符串并选择NewsHeading表
  • 编写查询
    SELECT News\u Id,newsdheadline FROM newsdheadline
  • 完成设置。现在应该在Source选项卡中生成一些代码。这还将创建一个
    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>