2017-05-15 8 views
1

データセット内のDataTableでデータをソートしようとしています。以下のコードを使用してAdo.netのDataviewmanagerを使用して同じデータセット内のデータテーブルをソート

働いているが、理由は、他のテーブルの関係が(コードのライン5からの)テーブルを除去し、投げていない上記のコードソートを使用することにより

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

に取り組んでいます「関係は最初に取り除かなければならない」というエラーがありますが、私の場合はそうではありません。関係を削除すると、他のテーブルからデータが失われます。

ソートに「DataviewManager」を使用しようとしましたが、ソートされていませんか?

ソートされたデータをDataViewManagerからDataSetに追加する方法を提案できますか?

注:My Datasetには4つのテーブルがあります。

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

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

あなたはdefaultviewtableから戻ってそれらを追加し、DTからすべての行を削除でした:

これは、コードのですか? – WithMetta

答えて

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); 
} 
関連する問題