programing

열과 방향이 지정된 DataTable을 어떻게 정렬합니까?

nasanasas 2020. 10. 28. 08:09
반응형

열과 방향이 지정된 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

반응형