如果希望对GridView的每一行执行操作,则通常使用RowDataBound。但是,您也可以使用DataBound并循环遍历那里的每一行。除了在RowDataBound中保存代码行之外,这两种方法都有什么优缺点吗?(表演与否?)
发布于 2013-09-16 21:09:00
无论如何,每一行都会触发RowDataBound,因此在DataBound事件中不需要额外的循环。但是,由于这是微观优化,主要的区别是用foreach循环行只会给您提供DataControlRowType DataRow的行,而RowDataBound事件也会为您提供其他的RowTypes,如
因此,例如,如果您想要页脚:
void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.Footer)
{
// ...
}
}用foreach你只能得到DataRows
foreach(GridViewRow row in gridView1.Rows)
{
// no footer here
}DataBound事件的一个优点是您知道在这个阶段所有的行都已经被数据库化了。在RowDataBound中,您不能访问第一行中第二行的控件/文本。但是,如果您需要这样做,最好使用底层DataSource(例如,DataTable)来获取所需的值(F.E)。以聚合列)。
因此,DataBound的主要目的是,如果您想在网格被数据库之后触发一次,而不是针对每个GridViewRow。也许是与GridView完全无关的东西。
发布于 2013-09-16 21:12:33
我想说的是,使用RowDataBound有一个明显的优势,原因很简单:它无论如何都会在绑定过程中被执行。在网格被数据库后循环通过添加了一个不必要的步骤。
https://stackoverflow.com/questions/18837274
复制相似问题