【C#】Gridview小技巧

【.net】Gridview小技巧

今天寫文章的因素來自於網路上的一個問題。

藍色小舖:GridView DataBound 問題

問題中寫到,第一個欄位想放圖片,但是圖片路徑是想按照資料欄位來放置。

其實,GridView雖然肥大,但也同時伴隨著他的強大。

寫法有很多種,今天介紹一種不用寫後端程式(.cs)的方法。

當然,用RowDataBind也可以做到。

今天介紹,利用TemplateField+Eval來達成。

關於TemplateField大概可以解釋成,可以自訂使用套件等來呈現資料。

至於Eval就請看MSDN:點此連結

就直接看程式啦!

   1: <asp:TemplateField HeaderText="縣市">
   2:        <ItemTemplate>
   3:           <asp:Image ID="Img_SmallPhoto" ImageUrl='<%#Eval("CitySum","/image/{0}.jpg") %>' runat="server" AlternateText="Icon"></asp:Image>
   4:           <asp:Image ID="Image1" ImageUrl='<%# string.Format("/image/{0}.jpg",Eval("CitySum").ToString())  %>' runat="server" AlternateText="Icon2"></asp:Image>
   5:           <asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("CityName") %>' NavigateUrl='<%# string.Format("Default2.aspx?CID={0}",Eval("CitySum").ToString()) %>'></asp:HyperLink>
   6:        </ItemTemplate>
   7:   </asp:TemplateField>

其中,提供圖片和超連結來做類似的功能。

第一個:Image ID=Img_SmallPhoto這一個,此種方式適合一個欄位做關鍵值。

看到ImageUrl,我是利用MSDN上寫的,這樣可以把Url變成【/image/CieySum這個欄位的資料.jpg】。

第二個:Image ID=Image1,此種方式適合多個值當關鍵值。

看到ImageUrl部分,此種方式是利用string.Format的方式,第一欄放格式,之後就按照格式放變數。

最後的呈現也如同第一個方式。

第三個:HyperLink

我們常常在主要資料呈現後,會有觀看明細的功能,此時若你把明細頁寫成另外一頁,要透過某一ID當取資料的值就很適合這樣做。

範例中,最後按下連結的時候,會導向Default.aspx?CID=CitySum(這個欄位的值)這一頁。

大概就是這樣啦!

希望對大家有所幫助!!

這樣有種缺點,就是頁面和程式碼還是沒有完全抽離,有點像ASP勒!!

所以,還是看大家自己的習慣&喜好&公司是否有規定嚕。