【问题标题】:Is there an elegant/simple way to do a Databind on all grids on a page?是否有一种优雅/简单的方法可以在页面上的所有网格上进行数据绑定?
【发布时间】:2015-06-12 09:02:36
【问题描述】:

是否有一种优雅/简单的方法可以对页面上的所有网格视图进行数据绑定? 我继承了一些旧的 webform 代码,该代码在一个页面上最多显示 17 个网格视图。我需要根据新的日期范围刷新这些视图。

我打算在 page_load 事件中对 gridviews 执行 DataBind。这适用于第一个网格,但我不想在页面加载事件中再做 16 次相同的事情,所以想知道有没有办法遍历页面上的所有网格视图?

所有的网格视图都被动态添加到表单中。

【问题讨论】:

    标签: asp.net gridview data-binding


    【解决方案1】:

    绝对是的。

    所有设置了 DataSourceID 属性的 VISIBILE 数据绑定控件将在每次回发和刷新时自动进行数据绑定。

    Visibile 是指任何具有Visibile=True 的数据绑定控件或数据绑定控件的父级(层次结构中的任何位置)都将是数据绑定的。

    无论是动态的还是其他的,控件都会添加到控件层次结构中,并且它们都遵循相同的规则。

    当您构建一个 aspx 页面时,您所要做的就是为 ASP 提供一组预定义的控件和关系,它会在每次刷新和回发时动态构建这些控件和关系。

    通过用户干预动态添加的控件也遵循相同的规则,只是需要进行更多手动“接线”,但生命周期规则仍然适用。

    【讨论】:

      【解决方案2】:

      你可以像这样遍历所有的gridview控件:-

      foreach (Control control in Page.Controls)
      {
           foreach (GridView grdView in control.Controls.OfType<GridView>())
            {
                 grdView.DataSource = data;
                 grdView.DataBind();    
            }
      
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        • 2018-04-08
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-08
        相关资源
        最近更新 更多