2009-09-15 7 views
1

블랙 박스 구성 요소로 전달되는 사용자 지정 데이터 집합을 만듭니다. 데이터 세트는 일반적으로 5 ~ 6 개의 테이블 (고유 한 이름이 나와 할당 됨)로 구성됩니다. 구성 요소는 데이터 집합을 가져 와서 테이블 이름을 기반으로하는 드롭 다운 콤보 상자를 만듭니다. 내가 뭘 해야하는지는 데이터 집합 내에서 테이블의 순서를 변경하는 것입니다. 먼저 드롭 다운에서 적절한 선택을 사용자에게 제공 할 수 있도록이 작업을 수행해야합니다 (응용 프로그램의 섹션을 기반으로 함). 예를 들어 ... "A 섹션"에있는 경우 드롭 다운 목록에 표시된 첫 번째 테이블 이름입니다. 사용자가 "섹션 F"로 이동하면 목록에 처음 표시됩니다. .. so on 등등.C# 데이터 집합의 테이블 재정렬

더 많은 코드 집약적 인 방법은 물론 테이블을 데이터 집합에 추가하는 순서를 변경하는 것입니다. 이 방법이 효과적 일지 모르지만, 더 우아하고 적은 코드로이 작업을 수행 할 수있는 방법이 있어야한다고 생각했습니다.

저는 C#에서 3.5 프레임 워크로 작업하고 있습니다.

+0

사용하고있는 구성 요소에는 데이터 세트가 필요합니다. 지금까지 본 것에서 볼 때, 콤보 상자는 데이터 세트에 테이블을 추가하는 순서에 기반합니다. "TableA", "TableB"및 "TableC"를 데이터 세트에 추가하면 콤보 상자에 표시되는 순서입니다. 이것은 모두 괜찮지 만 구성 요소를 사용하고있는 페이지는 사실상 동적입니다. 때로는 사용자가 페이지에 오면 콤보 상자의 첫 번째 옵션으로 "TableB"를 표시해야합니다. 다른 시간 인 "TableC"는 콤보 상자의 첫 번째 항목이어야합니다. –

+0

데이터 세트에 모든 테이블을 추가하는 방법이 있었으면 좋겠다. 그러면 데이터 세트에 어떤 테이블이 먼저 있어야하는지 간단하게 알리십시오. 그것은 내가 지금해야 할 모든 것입니다. –

답변

2

DataSet과 그 내용은 힙에 저장되므로 DataSet의 여러 위치에 DataTable 개체를 둘 수 있습니다.

단순히 위치 0에 더미 DataTable을 사용하여 데이터 세트를 만듭니다. 그런 다음 어떤 섹션에 있는지에 따라 해당 테이블을 제로 위치에 놓습니다. 귀하의 테이블 이름은 귀하의 DropDownBox에 한 번 '기본'으로 표시되고 적절한 상황에서 다시 아래에 다른 테이블과 함께 주문됩니다.

public class ThisThing 
{ 
    private DataSet myDS = new DataSet(); 

    //Populate your DataSet as normal 

    public DataSet ChangeLocation(int CurrentSectionNumber) 
    {  
     myDS.Table[0] = myDS.Table[CurrentSectionNumber] 
    } 
} 
+0

DataSet의 WriteXml() 메서드에 스키마를 쓰지 않지만 빈 데이터 테이블을 나타내도록 지시하는 방법이 있었으면 좋겠다. ReadXml을 사용하여 DS를 다시 구성하면 빈 테이블이 빈 테이블로 나타나지 않고 많은 코드가 실패합니다. DataTableCollection()에서 Insert()를 호출하는 방법이 필요했습니다. – felickz

0

나는 DataSet의 데이터 구조로 사용자의 주문 정보를 가장 직관적 인 방법은 강제로 시도 모르겠어요. DataSet 대신 (또는 그에 추가하여) DataTable의 정렬 된 목록을 전달하는 것이 좋습니다.

관련 문제