데이터 바인딩 된 콤보 상자를 정렬하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/29731

  •  09-06-2019
  •  | 
  •  

문제

나는 이것에 대해 약간의 연구를 해왔고 데이터 바인딩 된 콤보 상자를 정렬하는 유일한 방법은 데이터 소스 자체 (이 경우 DataSet의 DataTable)를 정렬하는 것 같습니다.

그렇다면 DataTable을 정렬하는 가장 좋은 방법은 무엇입니까?

콤보 상자 바인딩은 다음을 사용하여 디자이너 초기화에서 설정됩니다.

myCombo.DataSource = this.typedDataSet;
myCombo.DataMember = "Table1";
myCombo.DisplayMember = "ColumnB";
myCombo.ValueMember = "ColumnA";

설정을 시도했습니다

this.typedDataSet.Table1.DefaultView.Sort = "ColumnB DESC";
그러나 그것은 차이가 없으며 typedDataSet.Merge 호출 전후에 컨트롤 생성자에서 이것을 설정하려고 시도했습니다.

도움이 되었습니까?

해결책

DataTable을 사용하는 경우 (DataTable.DefaultView) DataView.Sort 속성.유연성을 높이려면 BindingSource 를 사용할 수 있습니다.구성 요소.BindingSource는 콤보 상자의 DataSource입니다.그런 다음 콤보 상자의 DataSource를 변경하지 않고 DataTable에서 List로 데이터 소스를 변경할 수 있습니다. <인용구>

BindingSource 구성 요소는 많은 목적.첫째, 단순화 양식의 컨트롤을 데이터에 바인딩 통화 관리, 변경 제공 알림 및 기타 서비스 Windows Forms 컨트롤과 데이터 소스.

다른 팁

실제로 기본보기 를 정렬 할 수 있습니다.a> DataTable : 라코 디스

그러면 DataTable에서 직접 검색 한 모든 행이 정렬됩니다.

테이블이 아니라 Sort 속성을 설정 한 후 DefaultView를 Controls 데이터 소스에 바인딩해야합니다. 라코 디스

Josh Smith는 이 질문에 대한 답변을 제공하는 블로그 게시물 은 모두 XAML로 처리합니다.

데이터가 DataTable에 있어야합니까? SortedList를 사용하고 콤보 상자에 바인딩하는 것이 더 간단한 방법입니다.

DataTable을 사용해야하는 경우 Select 메서드를 사용하여 DataView를 검색하고 정렬 매개 변수를 전달할 수 있습니다. 라코 디스

ComboBox를 정렬하는 가장 간단한 방법은 ComboBox.Sorted 속성. 그러나 데이터 바인딩을 사용하는 경우에는 작동하지 않습니다. 이 경우 데이터 소스 자체를 정렬해야합니다.

SortedList 중 하나를 사용할 수 있습니다. 또는 SortedDictionary (둘 다 키별로 정렬) 또는 DataView .

DataView에는 정렬 이 있습니다. 정렬 식 (문자열)을 허용하는 속성 (예 : ) 라코 디스

위의 예에서 State와 ZipCode는 모두 DataView를 만드는 데 사용되는 DataTable의 열입니다.

이 질문에 대한 답변을 이미 선택했음을 알고 있지만 양식에 DataView를 배치하고이를 DataSet / DataTable에 바인딩하고 디자이너의 View에 정렬을 설정하는 것이 좋습니다.그런 다음 콤보 박스를 DataSet / DataTable이 아닌 DataView에 바인딩합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top