作者MOONRAKER (㊣遂去,不复与言)
看板Visual_Basic
标题Re: [.NET] GridView的onrowdatabound
时间Wed May 25 12:44:15 2011
※ 引述《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
[蒙帝派松正体中文计画] https://www.youtube.com/user/JamesBondXD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.168.228
※ 编辑: MOONRAKER 来自: 59.120.168.228 (05/25 17:40)