今天在做一个程序,有个字段存的是分钟,绑定到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 + "分钟"; }
不知道理解的对不对,先记录下来,防止以后犯下同样的错误、