※ 引述《yuchia69 (Joe Hsu)》之銘言:
: 請輸入專案類型(網站專案或者應用程式專案):vs2008
: <asp:GridView ID="gviewResult" runat="server" AutoGenerateColumns="False"
: width="100%" onrowdatabound="gviewResult_RowDataBound"></asp:GridView>
: <asp:SqlDataSource ID="sdsResult" runat="server" ></asp:SqlDataSource>
: 一般使用GridView都會SqlDataSource去DB取得資料
: 可是看到有人用onrowdatabound
: 但是我去MSDN上查 這部分好像很難看懂 (google上也不多)
: 請問大大 onrowdatabound到底是做啥用?
onrowdatabound要寫一個event handler, 接收以下的引數
(注意這是C#,一時沒VB的例子)
public void whatever_rowDataBound(Object sender, GridViewRowEventArgs e)
這個handler在gridview每行都會執行一次,
利用這種的 e 你可以取得目前正在處理的這一列,和裡面的格位
e.Row
e.Row.Cells[0] ' 最左邊那格
e.Row.Cells[0].Text ' 格子裡面的內容(HTML)
你就可以自己來填寫cell裡面的東東,例如
if e.Row.Cells[1].Text = "影片" then
e.Row.Cells[3].Text = ...
end if
這個方法不適合新手用,我簡單講一下最近看到的三個例子:
一個是先查出一個datatable,再在這個事件裡依序拿出datarow填格子。
做法非常迂迴,而且他的結果跟直接指定sqlds也無差別,完全不能理解為啥要這樣做。
一個是討論區用的,sqlds查出每一個討論串(thread)之後,
在這個事件裡再插入討論串內各篇標題和一個按鈕並隱藏起來,按按鈕才會顯示
這很技巧,也非常困難,但是他的寫法也不是最好,後人要改他的code時非常辛苦。
最後一個比較簡單,根據圖片檔名(第1格)和類型(第2格)決定要不要顯示預覽的html
這就是我上面舉的例子。
但是這樣寫的時候要注意,以這個例子而言,不可參考到要修改的cell自己
也就是說,你若寫
if e.Row.Cells[3].Text = "影片" then
e.Row.Cells[3].Text = ...
end if
這樣是沒有用的,因為這時候cells[3]會參考到空白。
--
Google 關鍵字 : MPFC-TCP / 殺人笑話 / 包租婆也有過當羅莉的時候
Youtube關鍵字 : 脫衫脫褲 / 傻蛋奧運 / 宗教審訊 / 買張床 / 單車超人 / 謳歌金錢
*美髮師登山隊 http://tinyurl.com/dm6lh3 *Ypres 1914 http://tinyurl.com/b432jb
[蒙帝派松正體中文計畫] http://www.youtube.com/user/JamesBondXD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.168.228
※ 編輯: MOONRAKER 來自: 59.120.168.228 (05/25 17:40)