2010-02-22 3 views
1

List<long>과 같은 원시 형식의 컬렉션을 DataGridView의 데이터 소스로 사용할 수 있습니까?.NET의 DataGridView에서 데이터 소스로 원시 형식의 컬렉션?

성의가없는 시도 후에 DataGridViewColumn에 PropertyName을 부여 할 수 있도록 간단한 구조체를 만들었습니다. 하지만 이제는 UI를 다룰 때 내 값을 상자에 넣고 나머지 앱은 unbox하여 데이터 바인딩의 이점을 무효화하고 IComparable 및 IEquatable을 구현하여 목록 정렬 및 검색을 지원하는 구조체를 구현해야합니다. 충분한 작업, 구조체 자체의 존재 자체가 충분히 혼란 스럽다).

오버 헤드가 많고 UI 위젯에 값 목록을 제공하는 것만 큼 복잡한 것처럼 보입니다. 확실히 쉬운 방법이 있습니다.

답변

1

사용자에게 표시 할 번호 목록이있는 경우 ComboBox을 사용하는 것이 좋습니다. 이 방법으로 DataSourceList<long>으로 설정할 수 있습니다.

그러나, 당신은 정말 필요한 경우 DataGridView 당신이 당신의 List<long>List<Long?>로 변경할 수 있습니다 당신은 이제 경계 목록의 Value 속성에 그리드 뷰 열을 바인딩 할 수 있습니다. 이 접근법은 사용자 정의 구조체를 저장하지만 여전히 손상 솔루션입니다.

+0

감사합니다. 목록 은 정상적으로 처리됩니다. nullable 유형을 인식하지 못했습니다. – PunctuallyChallenged

+0

nullable 타입의'Value' 속성은 읽기 전용이므로이 대안을 사용하여'DataGridView' 셀을 편집 할 수 없다는 점은 주목할 가치가 있습니다. – PunctuallyChallenged

1

@ João의 솔루션은 코드를 제어 할 수 있다면 좋습니다.

들어오는 목록을 제어하지 않으면 이름이 지정된 엔티티를 바인딩 할 수 있도록 linq 식으로 래핑 할 수 있습니다.

List<int> list = new List<int> {1, 1, 1}; 
var q = from item in list select new { bindingname = item }; 
dataGridView1.DataSource = q.ToList(); 
+0

흥미 롭습니다. 감사합니다. – PunctuallyChallenged

관련 문제