0

次のようなテーブルがあります。

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

このデータは、グリッドビューのデータソースであるデータテーブルに存在します。可能であれば、データテーブルを反復処理して、名前フィールドが変更されたときに行を挿入したいと思います。このような:

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();

ただし、問題は、ループ内で保留名を設定するのが難しいことです。最初にループの「外側」に設定してから、ループ内でチェックする必要があるようです。問題は、データテーブルの最初のレコードを取得せずに名前を知る方法です。おそらく、それが私の答えですか?最初のレコードを取得し、その名前をホールド名変数に入れ、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 に答える