[GridView] 如何在 HyperLink 欄位中加入數個參數

如果你在 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 等等, 但應該不會有什麼不同才對。


Dev 2Share @ 點部落