日期:2014-05-18 浏览次数:20491 次
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { //do nothing } if (e.Row.RowType == DataControlRowType.DataRow) { Response.Write(GridView1.Rows[0].Cells.Count.ToString()); } }
------解决方案--------------------
有点明白了。
第一次RowDataBound被执行的时候,是Header被创建后加进GridView的时候。也就是if(e.Row.RowType==DataControlRowType.Header){ //这里被执行;}
这时候GridView1.Rows[0]你根本访问不到,因为GridView.Rows的时候是不考虑Header的。
第二次RowDataBound被执行的时候,第一行的GridViewRow已经被创建,数据也被绑进GridViewRow里了。但真到RowDataBound执行结束,你都不可能访问到GridView1.Rows[0],因为GridViewRow还没添加进GridView的集合当中。
当第三次DataRowBound执行的时候,这是候才有一个真正包含数据的GridViewRow已经被添加进GridView.Rows集合。这时才能访问到GridView.Rows[0]。