1

我正在尝试对数据集中的 DataTable 中的数据进行排序。

通过使用下面的代码,它正在工作

DataTable dt = (this._dataSet).Tables["Customers"];
dt.DefaultView.Sort = "Surname";
dt.TableName = "Customers";
DataTable defaultviewtable = dt.DefaultView.ToTable();    
(this._dataSet).Tables.Remove("Customers");
(this._dataSet).Tables.Add(defaultviewtable);

通过使用上面的代码排序是有效的,但是由于其他表关系,它没有删除表(从代码中的第 5 行开始)并抛出错误“应该首先删除关系”,这根本不是我的情况。如果我删除关系,我将从其他表中丢失数据。

我尝试使用“DataviewManager”进行排序,但它没有排序?

有人可以建议如何将已排序的数据从 DataViewManager 附加到 DataSet 吗?

注意:我的数据集有 4 个表。

这是代码:

var dataViewSetting = new DataViewManager(this._dataSet).DataViewSettings["Customers"];

if (dataViewSetting != null)
{
    dataViewSetting.ApplyDefaultSort = true;
    dataViewSetting.Sort = "Surname";
}
4

1 回答 1

1
DataTable dt = (this._dataSet).Tables["Customers"];
dt.DefaultView.Sort = "Surname";
dt.TableName = "Customers";
DataTable defaultviewtable = dt.DefaultView.ToTable();    

// Remove all rows from the table
for(int i = dt.Rows.Count-1; i >= 0; i--)
{
    dt.Rows[i].Delete();
}

// Add rows back using the sorted view
for(int i = 0; i < defaultviewtable.Rows.Count; i++)
{
    dt.Rows.Add(defaultviewtable.Rows[i].ItemArray);
}
于 2017-05-15T18:58:56.670 回答