看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《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)