【问题标题】:How to loop through the whole gridview rows including the rows in other pages?如何遍历整个gridview行,包括其他页面中的行?
【发布时间】:2012-09-27 13:01:08
【问题描述】:

我知道如何遍历网格视图行:


foreach (GridViewRow oItem in GridView1.Rows)
{
    //
}

但是如果我启用 paging ,我想要做的是遍历整个网格视图,包括其他页面中的行。 如何做到这一点?

【问题讨论】:

  • 为什么不直接遍历数据源?

标签: c# asp.net loops gridview data-paging


【解决方案1】:

@just_name,您需要记住,对 GridViewRow 等服务器端对象的任何操作都是处理数据的最糟糕方式。如果您需要任何数据驱动的操作 - 在数据源中进行,而不是在视图中进行。

【讨论】:

  • 我有文本框作为模板字段的问题
  • @just_name 您不能使用绑定将文本框值绑定到源代码中的模型?你能描述完整的问题吗,有没有更好的方法来解决它?
【解决方案2】:

您可以使用Cast<T>OfType<T> 转换为IEnumerable<T>

foreach (GridViewRow oItem in GridView1.Rows.OfType<GridViewRow>())
{
}

或者:

foreach (GridViewRow oItem in GridView1.Rows.Cast<GridViewRow>())
{
}

在这种情况下,两者都使用是正确的,因为Rows 只包含GridViewRow 的元素。但是你不应该注意到两种方法之间的区别:

  1. Cast&lt;T&gt;将元素转换为指定类型。

  2. OfType&lt;T&gt;过滤基于指定类型的元素。

【讨论】:

  • 嗯,谢谢,但这解决了我的问题。例如,如果网格有 5 行,并且我在最后一页有一行。循环计数是 1 而不是 5 !!!我想遍历整个页面,而不仅仅是选定的页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多