ASP.NET 2.0 – 善用GridView控制項的HyperLinkField資料行 自章立民CnBlogs)

來源:互聯網
上載者:User
善用GridView控制項的HyperLinkField資料行

善用GridView控制項的HyperLinkField資料行

 

藉助於GridView控制項的HyperLinkField資料行,我們便可以在GridView控制項中替每一筆資料列顯示出一個超級連結,並讓使用者輕易重新導向至特定的目標位置(特定網頁或網頁中的位置)。

 

在使用HyperLinkField資料行時,首先要考慮的就是超級連結上的文字。關於此點,可分為下列兩種狀況來說明:

 

q          如果您希望每一筆資料列的超級連結都顯示相同的固定文字,請將HyperLinkField資料行的Text屬性設定成所需的文字。圖表1所示者即是一例。

 

 

圖表1

 

q          如果您希望使用欄位的內容作為每一筆資料列之超級連結的文字,請將HyperLinkField資料行的DataTextField屬性設定成該欄位。圖表2所示者即是一例。

當然,最常與DataTextField屬性搭配使用的不外乎就是DataTextFormatString屬性。我們經常使用DataTextFormatString屬性來格式化取自DataTextField屬性所指定之欄位的資料值。圖表3所示者即是一例。

 

 

圖表2

 

 

圖表3

 

學會如何設定HyperLinkField資料行所產生之超級連結的文字之後,接下來就是學習設定超級連結的目標URL。如果您要讓所有的超級連結都連結至相同的URL,請直接將NavigateUrl屬性設定成所需的URL。這樣的設定雖然最為單純,但是卻也非常不切實際,畢竟就算是連結至相同的網頁,也會每一筆資料列連結至相同網頁中的不同位置(也就是書籤 - BookMark)。因此,較為實用的應該是DataNavigateUrlFields屬性,原因很簡單,它允許您指定某一個欄位中的URL作為連結的目的地(請注意此屬性的名稱是以s結尾,這是有玄機的,稍後會加以說明)。以圖表4所示者而言,表示以「網址」欄位中的URL作為連結的目的地,如此一來,不同的超級連結將會擁有各自的URL。

 

圖表4

 

當然,談到了DataNavigateUrlFields屬性,絕對不能忘了它的好兄弟 - DataNavigateUrlFormatString屬性。DataNavigateUrlFormatString屬性最主要的用途是用來格式化超級連結的URL。舉例來說,假設您指派給DataNavigateUrlFields屬性的欄位並非內含完整的URL(例如:http://www.gotop.com.tw)而僅僅是內含網頁檔的名稱(例如:AlexPage.aspx),此時如果希望超級連結的URL能夠在網頁檔的名稱前加上完整的位置路徑的話,您可以採用以下的寫法:

 

<asp:HyperLinkField DataNavigateUrlFields="個人網頁"
                    DataNavigateUrlFormatString="~/Members/{0}"
                    HeaderText="個人網頁" Text="檢視個人網頁" />

 

以上面的寫法而言,表示以連結至根目錄下之Members資料夾中的網頁檔案。又以下面的寫法而言,則表示連結至一個絕對URL(也就是某網站)中之Members資料夾中的網頁檔案:

 

<asp:HyperLinkField
 DataNavigateUrlFields="個人網頁"
 DataNavigateUrlFormatString="http://www.alexmember.com/Members/{0}"
 HeaderText="個人網頁" Text="檢視個人網頁" />

 

談到這裡,相信大家對HyperLinkField資料行都已經能夠運用自如,現在呢,我們要再回頭研究研究DataNavigateUrlFields屬性,為什麼它的名稱要特別以s結尾呢?原因很簡單,因為您可以指派一個以上的欄位名稱給DataNavigateUrlFields屬性。什麼時候需要這樣做呢?舉例來說,當每一個超級連結的URL都是要連結至相同的網頁但是卻要傳遞查詢字串給該網頁(類似如下所示),以便讓目標網頁根據不同的參數值來進行不同的處理時,就有需要這樣做:

 

MemberPage.aspx?Name=章立民&MemberLevel=A

 

欲使您的超級連結擁有類似如上的URL,就必須藉助於DataNavigateUrlFields屬性來構建之。這個時候,您必須將NameMemberLevel欄位同時指派給DataNavigateUrlFields屬性(NameMemberLevel欄位必須以逗號分隔),並利用DataNavigateUrlFormatString屬性來加以格式化即可。寫法如下所示:

 

<asp:HyperLinkField
 DataNavigateUrlFields="Name, MemberLevel"
 DataNavigateUrlFormatString="MemberPage.aspx?Name={0}&MemberLevel={1}"
 HeaderText="會員網頁" Text="檢視會員網頁" />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.