博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

对于GridView控件的RowDataBount事件的错误理解

Posted on 2013-04-26 10:34  JmrBrvae  阅读(167)  评论(0编辑  收藏  举报

今天在做一个程序,有个字段存的是分钟,绑定到GridView时要转变成小时,自然会用到GridView的 RowDataBound事件。

但是我犯了一个严重的错误,在这个事件中我又用了循环来处理数据。

//foreach (GridViewRow gr in GVData.Rows)
        //{
        //    string a = gr.Cells[5].Text;
        //    TimeSpan ts = new TimeSpan(0, int.Parse(gr.Cells[5].Text),0);
        //    gr.Cells[5].Text = ts.Hours + "小时" + ts.Minutes + "分钟";
        //}

因为开始只在数据库中添加了一条测试数据,所以不会出现什么错误,后来又添加了一条,一运行就会出错,是因为字符串格式问题,这才恍然大悟,

其实RowDataBound事件就是逐条数据绑定,绑定后才会执行这个事件,说的容易明白一点,他本身就是个循环。 所以,直接换成这样过即可。

 if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridViewRow gr = e.Row;
            string a = gr.Cells[5].Text;
            TimeSpan ts = new TimeSpan(0, int.Parse(gr.Cells[5].Text), 0);
            gr.Cells[5].Text = ts.Hours + "小时" + ts.Minutes + "分钟";
        }

不知道理解的对不对,先记录下来,防止以后犯下同样的错误、