首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最佳实践:带循环的DataBound与RowDataBound

最佳实践:带循环的DataBound与RowDataBound
EN

Stack Overflow用户
提问于 2013-09-16 21:03:13
回答 2查看 3K关注 0票数 3

如果希望对GridView的每一行执行操作,则通常使用RowDataBound。但是,您也可以使用DataBound并循环遍历那里的每一行。除了在RowDataBound中保存代码行之外,这两种方法都有什么优缺点吗?(表演与否?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-16 21:09:00

无论如何,每一行都会触发RowDataBound,因此在DataBound事件中不需要额外的循环。但是,由于这是微观优化,主要的区别是用foreach循环行只会给您提供DataControlRowType DataRow的行,而RowDataBound事件也会为您提供其他的RowTypes,如

  • DataRow:数据控件的数据行。只有DataRow行可以被数据绑定.
  • EmptyDataRow:数据绑定控件的空行.当数据绑定控件没有要显示的记录且EmptyDataTemplate模板不为空时,将显示空行。
  • 页脚:数据控件的页脚行。页脚行不能绑定数据.
  • :数据控件的标题行。标题行不能绑定数据。
  • 寻呼机:显示寻呼按钮或寻呼机控件的行。
  • 分离器

因此,例如,如果您想要页脚:

代码语言:javascript
运行
复制
void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{  
    if(e.Row.RowType == DataControlRowType.Footer)
    {
        // ...
    }
}

foreach你只能得到DataRows

代码语言:javascript
运行
复制
foreach(GridViewRow row in gridView1.Rows)
{
    // no footer here
}

DataBound事件的一个优点是您知道在这个阶段所有的行都已经被数据库化了。在RowDataBound中,您不能访问第一行中第二行的控件/文本。但是,如果您需要这样做,最好使用底层DataSource(例如,DataTable)来获取所需的值(F.E)。以聚合列)。

因此,DataBound的主要目的是,如果您想在网格被数据库之后触发一次,而不是针对每个GridViewRow。也许是与GridView完全无关的东西。

票数 5
EN

Stack Overflow用户

发布于 2013-09-16 21:12:33

我想说的是,使用RowDataBound有一个明显的优势,原因很简单:它无论如何都会在绑定过程中被执行。在网格被数据库后循环通过添加了一个不必要的步骤。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18837274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档