DataTable.Select()의 결과를 ListBox 컨트롤에 어떻게 바인딩합니까?
-
02-07-2019 - |
문제
다음 코드가 있습니다.
ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"
그만큼 DataTable.Select()
방법 배열을 반환합니다. System.Data.DataRow
사물.
내가 무엇을 지정하든 관계없이 ListBox.DisplayMember
속성에서 내가 보는 것은 모두 다음과 같이 표시되는 올바른 수의 항목이 있는 ListBox뿐입니다. System.Data.DataRow
내가 원하는 값 대신에 "name"
열!
결과 배열에 바인딩하는 것이 가능합니까? DataTable.Select()
, 이를 반복하여 각 항목을 ListBox
?
(루프에는 문제가 없지만 우아한 결말은 아닌 것 같습니다!)
해결책
사용 데이터뷰 대신에.
ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"
다른 팁
Josh는 DataView를 가지고 있습니다.매우 큰 망치가 필요한 경우 DataTable.Select("...")에서 행 배열을 가져와 다른 DataSet으로 병합할 수 있습니다.
DataSet copy = new DataSet();
copy.Merge(myDataTable.Select("Foo='Bar'"));
// copy.Tables[0] has a clone
수행하려는 작업에 대한 이러한 접근 방식은 아마도 과잉일 가능성이 높지만 도움이 되는 행 배열에서 데이터 테이블을 가져와야 하는 경우가 있습니다.
제휴하지 않습니다 StackOverflow