2017-05-15 9 views
1

데이터 집합에있는 DataTable에서 데이터를 정렬하려고합니다.Ado.net의 Dataviewmanager를 사용하여 동일한 데이터 집합의 데이터 테이블 정렬

는 아래의 코드를 사용하여 그것을 정렬이 작동 위의 코드를 사용하여

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"; 
} 
+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); 
}