열과 방향이 지정된 DataTable을 어떻게 정렬합니까?
GridView에서 오는 열과 방향을 기반으로 DataTable을 메모리에서 리조트해야합니다. 함수는 다음과 같아야합니다.
public static DataTable resort(DataTable dt, string colName, string direction)
{
DataTable dtOut = null;
....
}
이 기능을 채우는 데 도움이 필요합니다. Select 문을 사용할 수 있다고 생각하지만 방법을 모르겠습니다. 이 브라우저로 인해 댓글을 클릭 할 수 없지만 현재 위치 또는 새 DataTable 솔루션 중 하나를 표시 할 수 있습니다. 포인터를 보여주는 사람들을 위해 프로토 타입과 유사한 코딩 된 함수가 필요합니다.
어때 :
// ds.Tables[0].DefaultView.Sort="au_fname DESC";
public static void Resort(ref DataTable dt, string colName, string direction)
{
string sortExpression = string.Format("{0} {1}", colName, direction);
dt.DefaultView.Sort = sortExpression;
}
"방향"이 "ASC"또는 "DESC"이고 dt에 "colName"이라는 열이 포함되어 있다고 가정합니다.
public static DataTable resort(DataTable dt, string colName, string direction)
{
DataTable dtOut = null;
dt.DefaultView.Sort = colName + " " + direction;
dtOut = dt.DefaultView.ToTable();
return dtOut;
}
또는 dtOut을 생성하지 않고
public static DataTable resort(DataTable dt, string colName, string direction)
{
dt.DefaultView.Sort = colName + " " + direction;
dt = dt.DefaultView.ToTable();
return dt;
}
DataView가 하나만있는 경우 대신 사용하여 정렬 할 수 있습니다.
table.DefaultView.Sort = "columnName asc";
시도하지 않았지만 올바른 것을 참조하는 한 여러 DataView로 이것을 할 수 있다고 생각합니다.
실제로 같은 문제가 있습니다. 나를 위해 다음과 같은 쉬운 방법으로 작업했습니다.
a에 데이터를 추가 Datatable
하고 정렬합니다.
dt.DefaultView.Sort = "columnname";
dt = dt.DefaultView.ToTable();
DataTable에는이 작업을 수행 할 수있는 오버로드 된 Select 메서드가 있습니다. 여기를 참조하십시오 : http://msdn.microsoft.com/en-us/library/way3dy9w.aspx
그러나 Select 호출의 반환 값은 DataTable이 아니라 RowData 개체의 배열입니다. 함수에서 DataTable을 반환하려면 해당 데이터 배열을 기반으로 처음부터 작성해야합니다. 다음은 두 문제에 대한 샘플을 다루고 제공하는 게시물입니다. http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/157a4a0f-1324-4301-9725-3def95de2bf2/
DataView를 만듭니다 . DataTable을 직접 정렬 할 수는 없지만 DataTable에서 DataView를 만들어 정렬 할 수 있습니다.
만들기 : http://msdn.microsoft.com/en-us/library/hy5b8exc.aspx
정렬 : http://msdn.microsoft.com/en-us/library/13wb36xf.aspx
다음 코드 예제는 재고 단위 수가 재주문 레벨보다 작거나 같은 모든 제품을 표시하는보기를 작성하고 먼저 공급 업체 ID별로 정렬 한 다음 제품 이름별로 정렬합니다.
DataView prodView = new DataView(prodDS.Tables["Products"], "UnitsInStock <= ReorderLevel", "SupplierID, ProductName", DataViewRowState.CurrentRows);
여러 방향으로 정렬하고 싶은 경우
public static void sortOutputTable(ref DataTable output)
{
DataView dv = output.DefaultView;
dv.Sort = "specialCode ASC, otherCode DESC";
DataTable sortedDT = dv.ToTable();
output = sortedDT;
}
참고 URL : https://stackoverflow.com/questions/5005658/how-do-you-sort-a-datatable-given-column-and-direction
'programing' 카테고리의 다른 글
C # ASP.NET에서 전체 쿼리 문자열 가져 오기 (0) | 2020.10.28 |
---|---|
Android에서 현재 활동을 완료하는 방법 (0) | 2020.10.28 |
어제 날짜를 어떻게 알 수 있습니까? (0) | 2020.10.28 |
빌드 실패 : ld : 중복 기호 _OBJC_CLASS _ $ _ Algebra5FirstViewController (0) | 2020.10.28 |
데이터베이스를 복사하는 가장 좋은 방법 (SQL Server 2008) (0) | 2020.10.27 |