asp.net中下面那个if语句是什么意思??

来源:百度知道 编辑:UC知道 时间:2024/05/30 00:37:01
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
((Label)(e.Row.Controls[0].FindControl("Label1"))).Text = Convert.ToDateTime(((Label)(e.Row.Controls[0].FindControl("Label1"))).Text.ToString()).ToLongDateString();
}
这个语句是什么意思,不知怎么理解,里面的东东都看不明白,为什么我运行看不到Label1??

label1是在你的GridView1的模板列中,运行时是看不到label1,其实GridView1中显示数据的就是那个label1.
这段代码的意思就是将当前显示的时间转化为LongDate类型
类似:
DateTime dt = DateTime.Now;
LabelTime.Text = dt.ToLongDateString().ToString();//2005年11月5日

e.Row.Controls[0].FindControl("Label1")//这段代码是通过GridView1的索引e,指定到要控制的控件,这里就是label1了。
Convert.ToDateTime(((Label)(e.Row.Controls[0].FindControl("Label1"))).Text.ToString()).ToLongDateString(); //这个就是将label1显示的时间类型转化为LongDate类型。

还有什么不明白的再说!

判断当前行是否是数据行,而不是headline哪一行,因为你的gridview可能包含了列名称
如果不判断,那在取第一行的时候就取到了各个列的名称,下面的转换就会发生异常

GridView的RowType有好几种类型 例如页眉 页脚 首先判断是不是 数据绑定的行
在数据行里寻找控件Label1并把Label1的字符串 转换为长时间格式

e.Row.RowType == DataControlRowType.DataRow
是在判断当前进行绑定的行是否是数据行。

这个数据绑定的过程是从上至下使用数据填充数据行,而对Header和Footer不做处理,所以绑定时需要判断正在进行绑定的行是否为数据行。

检查当行前是否有数据存在 在你gridview.databind()命令之后执行 所以你可以通过这个命令 来二次修改绑定数据集的结果 如果没有这句if 下面会因找不到数据而报错

HKbrian 解释if语句里面的语句解释的很好,有几个朋友解释if语句解释的很好,你自己看看吧