2009-07-28 3 views
0

Flex DataGrid에 체크 상자가 있는데, 스크롤하면 다른 행이 무작위로 선택/선택 해제됩니다.Flex DataGrid의 체크 상자 스크롤이 끊어졌습니다.

이상 읽은 후 : Creating a column of RadioButtons in Adobe Flex

는 itemRenderers 재활용지고 것은 분명하지만이 솔루션이 문제가 모델에보기에 대한 정보를 이동이 발표했다.

누구나 해결 방법이 더 좋으므로 UI에 대한 정보를 내 ActionScript 스크립트 클래스에 넣지 않아도됩니까? (필자의 경우 들어오는 XML 데이터를 actionscript 클래스로 변환하고 있으며, 이것들이 내 DataGrid에 바인딩되어있다.)

도움 주셔서 감사합니다.


모두에게 감사드립니다. 좋은 조언. 불행히도 모델을 순수하게 유지하는 데 너무 많은 오버 헤드가 발생했습니다. 그래서 원래의 게시물에있는 링크처럼 모델을 오염 시켰습니다. :(적어도 작동합니다.

Chetan에가, 깔끔한 아이디어 ... 그래도 난 행운 거의 하루 종일이 작업을 시도했다.

brd6644, 두 모델 클래스를 분리하는 좋은 생각은 ... 나는 수도

답변

1

DataGrid의 하위 클래스를 만들어 내부적으로 어떤 행을 선택/선택 취소했는지 (Array/Collection of Boolean) 저장할 수 있지만 데이터 악성 코드와 동기화 된 상태로 악마가있을 수 있습니다. 정렬되거나 필터링 될 때 dataProvider의 각 인덱스에있는 객체에 의해 키가 입력되고 Dictionary가 선택되었는지 여부를 나타내는 Boolean 값이있는 Dictionary를 사용할 수 있다고 가정합니다. 정렬/필터링 문제에서. dataProvider에 중복 참조가있는 경우에는 작동하지 않습니다.

또는 ActionScript 모델 클래스의 하위 클래스를 만들고 여기에 "selected"속성을 추가 한 다음이 둘 사이를 "변환"하는 간단한 유틸리티 메서드를 작성할 수 있습니다. 그런 식으로 View는 "ViewModel"클래스와 다른 계층 (특히 서버 측) 만 다루기 때문에 실제 "Model"클래스 만 처리합니다.

+0

두 번째 아이디어는 두 번째입니다. 나는 대개 isChecked (내 디자인에서 요구되는 몇 가지 다른 속성 중에서)를 정의하는 그리드에 할당되는 모든 모델 클래스의 기본 클래스를 만듭니다. –

+0

나는 동의한다, 나는 두 번째 옵션이 더 쉽다고 생각한다. 그리고 모델을 "오염시키는"순수한 개념을 대부분 피할 것이다. 그러나 첫 번째 접근 방식은 흥미롭고 재사용 가능성이 있습니다. –

0

cliff.meyers가 말한 것에 덧붙여 Alex Harui의 blog post에 설명 된대로 사용자 지정 IList 클래스를 만드는 세 번째 옵션이 있습니다. 그것은 실제로 영리하며, 컴포넌트를 하위 클래스 화하거나 모델 클래스를 오염시키지 않아도되므로 더 깨끗합니다.

관련 문제