0

我有一个看起来像这样的表:

Name   Hours
Mark   10
Mark   15
Mark   10
Mark   13
Albert 11
Albert 12
Max    10
Max    13

此数据驻留在数据表中,该数据表是我的 gridview 的数据源。如果可能的话,我想遍历数据表并在名称字段更改时插入一行。像这样:

Name   Hours
Mark   10
Mark   15
Mark   10
Mark   13

Albert 11
Albert 12

Max    10
Max    13

是否可以使用 foreach 循环遍历此数据表并在更改名称时在该点插入一行?或者,是否有另一种方法可以获得所需的结果?

感谢您的任何指点!

编辑:我的代码,到目前为止:

        var counter = 0;
        var holdName = "";
        // looping through datatable dt.
        foreach (DataRow row in dt.Rows)
        {
           //compare name from dt to hold name
           //if different
           //  insert blank row
           //  change hold name to new name
           //continue looping 
        }
        gridview1.Datasource = dt;
        gridview1.DataBind();

但问题是在循环中设置保持名称被证明是棘手的。就像它需要首先设置在循环的“外部”,然后在循环内进行检查。问题是,如果没有得到数据表中的第一条记录,我怎么知道名字是什么?也许,这就是我的答案?拿到第一条记录,把名字放到hold name变量里,然后开始foreach循环?

4

2 回答 2

2

我认为如果您使用 ASP.NET ListView 控件并使用数据分组,您将获得更好的结果,如下所示:

使用 ASP.NET 3.5 的 ListView 和 DataPager 控件:按数据字段分组

这是一篇略微过时的文章,但我认为它会带你到达你想去的地方。

于 2013-06-26T17:40:26.353 回答
1

正如 Brad M 已经说过的,foreach循环将起作用。您只需将名称存储在变量中并检查当前行的名称是否与最后一行中的名称相同(或者您可以检查当前行中的名称是否与下一行中的名称相同行。但这可能导致 OutOfBoundsException)。

于 2013-06-26T17:32:34.637 回答