今天做一个自定义的数据表,在执行gridview自带分页功能按钮时,在rowcreated事件中得到日期总是为空
调试的时候,获取日期值的那句代码总能调试过去,郁闷半天,在网上找到了gridview事件的执行过程,才明白,不能在rowcreated事件中去获取控件的值 ,因为这时候,控件还没有加载数据,只有到rowdatabound事件时 才能获取此时控件的值;
在网上找到了相关流程:记录下这次的学习过程!!
GridView控件第一触发的事件为Init事件,即初始化控件,随后是Load事件,把控件加载到页面中。如里加载控件成功,则开始执行数据绑定的操 作,并且在数据绑定过程中创建控件的每一行。创建控件的所有行这后,在页面上呈现控件,从而完成控件在页面上呈现的过程。
一、GridView 显示绑定的数据(默认为5行):
DataBinding
RowCreated:Header[0]
RowDataBound
RowCreated:DataRow[1]
RowDataBound
RowCreated:DataRow[2]
RowDataBound
RowCreated:DataRow[3]
RowDataBound
RowCreated:DataRow[4]
RowDataBound
RowCreated:DataRow[5]
RowDataBound
RowCreated:Footer[6] //不管有没有页角行,该事件都会发生
RowDataBound
RowCreated:Pager[7]
RowDataBound
DataBound
顺序如下:
DataBinding
RowCreated
RowDataBound
......
DataBound
二、GridView 点击分页按钮时的事件发生顺序:
RowCommand
PageIndexChanging
PageIndexChanged
DataBinding
RowCreated:Header[8]
RowDataBound
RowCreated:DataRow[9]
RowDataBound
RowCreated:DataRow[10]
RowDataBound
RowCreated:DataRow[11]
RowDataBound
RowCreated:DataRow[12]
RowDataBound
RowCreated:DataRow[13]
RowDataBound
RowCreated:Footer[14]
RowDataBound
RowCreated:Pager[15]
RowDataBound
DataBound
总结:
在 GridView 绑定数据开始,也就是触发 DataBounding 事件后,这时已经把数据从数据源取出或者说已经规定了那些数据字段将会被取出,其中 的 Visible 属性为 false 的字段的值是不会从数据源中获取的。这就是为什么当 GridView 使用直接在 html 中将 Visible=false 来隐藏某一列时,会得不到该列的值。然后调用 RowCreated 事件把一行数据全部填充到一个 gridViewRow 里面,然后触发 RowDataBound 事件把该行绑定到 GridView 的 Rows 中。一直到最后触发 GridView 的 DataBound 来绑定显示数据。
原始出处和作者信息及本声明http://www.blogbus.com/flbh-logs/233314940.html