2009-12-04 147 views
17

我想输出可点击的新闻标题列表。到目前为止,我可以得到它打印出一个标题列表,因为我拖放了VS 2010中的设计器视图中的NewsHeadline表。您如何认为我应该让列表元素可点击?我查找了一个URL属性,但我没有看到它。我是否需要包装在<的href?将链接列添加到ASP.NET GridView

<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> 

回答

28

您需要将列类型从BoundColumn更改为Hyperlink列。

<asp:hyperlinkfield headertext="NewsHeadline" 
     datatextfield="NewsHeadline" 
     datanavigateurlfield="NewsURL" 
     datanavigateurlformatstring="http://{0}" /> 

除了进行此更改之外,您还需要确保选择了URL或可用于创建新闻报道链接的内容。在上面的例子中,我假设URL是可以从SQL源获取的东西。如果它是一个ID,只需键入其余的URL像这样...“〜/ MyNewsPage.aspx?NewsID = {0}”...

+2

我不得不使用DataNavigateUrlFields是.NET 4的东西吗? – 2013-05-09 05:13:13

3

您需要使用超链接字段而不是BoundField ,像这样:

<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> 

9

使用hyperlinkfield代替:

<asp:hyperlinkfield datatextfield="NewsHeadline" 
     datanavigateurlfields="NewsID" 
     datanavigateurlformatstring="~\newsdetails.aspx?Id={0}" /> 
+0

整洁的解决方案.. – dincerm 2013-04-26 10:39:12

3

像这样将工作奇妙在Visual Studio中的解决方案2010年

  1. 在VS.网页的设计标签创建GridView
  2. 将鼠标悬停在GridView上,然后单击右上角显示的箭头。
  3. 转到“选择数据源”并选择“新数据源...”
  4. 创建连接字符串到您的数据库并选择NewsHeadline表。
  5. 填写询问函SELECT News_Id, NewsHeadline FROM NewsHeadline
  6. 完成设置。现在应该在Source选项卡中生成一些代码。这也将创建一个SqlDataSource,它现在是GridViewDataSource
  7. 转到Source选项卡中代码为GridView的位置,并用以下代码替换。

代码:

<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> 

而你所有的设置。这将创建一个所有标题列表作为带有动态生成的链接的动态生成的唯一链接的列表。我们使用与NewsHeadline表中的每个NewsHeadline条目对应的PRIMARY KEYNews_Id构建的查询字符串的恭维。

然后,当你加载newsdetails.aspx页面使用:Request.QueryString["News_Id"]来从URL中News_Id值,并用它来查询数据库有关的具体NewsHeadline单击的细节。然后,您可以在网页上显示该查询的结果。