如果你在 GridView 或其它具有資料繫結功能的容器中使用 HyperLink 欄位,要如何才能做出能夠連結類似 GetProductList.aspx?ProductCategoryID=1234&SupplierID=5678 這種帶有兩種以上參數的效果呢...
這也是一個老掉牙的問題了。因為一直有人在問,才把它整理於此。
如果你在 GridView 或其它具有資料繫結功能的容器中使用 HyperLink 欄位,要如何才能做出能夠連結類似 GetProductList.aspx?ProductCategoryID=1234&SupplierID=5678 這種帶有兩種以上參數的效果呢?
答案其實簡單得要命。加上以下兩個指令就行了:
DataNavigateUrlFields="ProductCategoryID,SupplierID" DataNavigateUrlFormatString="GetProductList.aspx?ProductCategoryID={0}&SupplierID={1}"
很多人都不曉得有這個功能,是因為在 GridView 或類似具備資料繫結能力的容器之外,普通的 HyperLink 控制項並沒有 DataNavigateurlFields 與 DataNavigateurlFormatString 這兩個屬性。換句話說,只有 GridView 及類似的容器中所提供的 HyperLink 欄位才具有這兩個屬性可以設定。
除了這種做法, 你也可以採用以下的做法:
<asp:TemplateField HeaderText="EPG"> <ItemTemplate> <asp:HyperLink ID="hlRetrieveOfficial" runat="server" Visible='<%# Eval("CanGetEpg") %>' Target="_blank" NavigateUrl='<%# string.Format("../Epg/GetEpg.aspx?engage=y&CID={0}&Enc={1}&Days={2}&Debug=N", Eval("CID"), Eval("Encoding"), Eval("DaySpan")) %>' Text='Get'></asp:HyperLink> </ItemTemplate> </asp:TemplateField>
在上例中, 我總共傳了三個引數進去; 當然, 你必須在 DataSource 中有 Select 這三個欄位才行。
此外, 如果你使用 C#, 那麼這裡 string.Format 的大小寫必須完全符合, 否則會出現問題。
除了 GridView, 我沒有試過 FormView, ListView, DetailsView 等等, 但應該不會有什麼不同才對。