0

データテーブルの行をdatarow[]配列に保存してから、データテーブルの行を削除し、datarow[]配列から別の順序でデータテーブルに書き換えてみました。しかし、データテーブルからそれらを削除すると、datarow[]配列からそれらにアクセスできなくなります。

私がこれを正しく行っているのか、それとも完全にベースから外れているのかはわかりませんが、私は必死に助けを必要としています。

これが私がやろうとしていることです:

8行のデータテーブルがあります。どういうわけか8行をループして、特定の基準に基づいて並べ替えることができるようにしたいと思います。

たとえば、私の行には、キーフィールドとして請求書番号、行番号、および部品番号があります。基準によっては、行6、7、8を行1、2、3として最初に配置し、残りを下にシフトする必要がある場合があります。

誰かがアイデアを持っているなら、返信してください....これは緊急の問題です。

ありがとうございました、

サム

4

3 に答える 3

1

このように並べ替えることができるため、DataViewを使用して行を表示します。

dataTable.DefaultView.Sort = "columnNameA, columnNameB desc";

次に、使用しているリストをDataViewにバインドします。

ああ、これがSortプロパティに関するいくつかのドキュメントです。

于 2012-07-19T19:07:47.037 に答える
0

次のようなもので試すことができます:

        DataTable table = new DataTable();
        table.Columns.Add("Invoice", typeof(string));
        table.Columns.Add("Line", typeof(int));
        table.Columns.Add("Part", typeof(string));

        for (int i = 1; i <= 9; i++)
            table.Rows.Add("Invoice " + i, i, "Part " + i);
        //reorder them:
        int[] orders = { 6, 7, 8, 1, 2, 3, 4, 5 };
        DataTable table2 = table.Clone();
        DataRow row;
        for (int i = 0; i < orders.Length; i++)
        {
            row = table2.NewRow();
            row["Invoice"] = table.Rows[orders[i]]["Invoice"];
            row["Line"] = table.Rows[orders[i]]["Line"];
            row["Part"] = table.Rows[orders[i]]["Part"];
            table2.Rows.Add(row);
        }
于 2012-07-19T19:21:42.633 に答える
0

DataRowを使用する場合:

var dr = table.Rows[0];

次に、テーブルから行を削除しdrます。これも削除されます。同じ行です。それはあなたの問題を説明しています。

解決策として、DataTableの行を並べ替えないでください。代わりに、と呼ばれる別の列を追加RowOrderし、順序を変更するように変更してから、@ mperrenoud03に示されているように、その列に基づいてDataTableを並べ替えます。

table.DefaultView.Sort = "RowOrder";

デフォルトのビューを使用します。

于 2012-07-19T19:14:01.717 に答える