2009-12-04 149 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單擊的細節。然後,您可以在網頁上顯示該查詢的結果。