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,对其进行修改以更改顺序,然后根据该列对 DataTable 进行排序,正如@mperrenoud03 向您展示的那样:

table.DefaultView.Sort = "RowOrder";

并使用默认视图。

于 2012-07-19T19:14:01.717 回答