2010-02-25 3 views
2

다른 filterFunctions가 연결되어 있고 다른 열을 표시하는 여러 Datagrid에 하나의 데이터 소스 (예 : 배열)를 사용하고 싶습니다. 첫째, 나는 매우 정직하고 apporach를 사용할 생각 :Flex3에서 여러 데이터 격자에 하나의 데이터 소스 사용

  • 모든 데이터 그리드에 대한의 ArrayCollection을 만들 배열
  • 을 만들고
  • 은 DataGrids를을 만들 배열에 "소스"속성을 설정하고 설정 자신의 dataProvider 속성을 지정된 ArrayCollection에

지금되었습니다. 모든 ArrayCollection에는 filterFunction, 정렬 상태 등이있을 수 있지만 메모리에 모든 데이터가있는 Array가 하나만 있으면됩니다.

지금 완전히 나를 혼란스럽게하는 지점 : 새 항목이 배열에 추가되면 물론 이벤트가 전달되지 않으므로 각 ArrayCollection에서 itemUpdated를 수동으로 호출해야합니다. Flex에 대한 더 깊은 이해를 돕기 위해 코드를 디버깅하는 동안, 나는이 "itemUpdated"메소드가 무엇을하는지, 특히 어도비 문서에서 "property"가 주어지지 않았다면 무엇을하는지 알아 내려고 노력했다. null 인 경우), 간단한 "refresh()"가 발생합니다. 전체 디버깅에서 "refresh()"호출을 찾지 못했습니다. 그리고 프레임 워크 전체를 최대한 깊게 내려갔습니다 (btw : 재미있는 주석이 코드에 많이 있습니다 :-))). 유일하게 찾을 수있는 것은 CollectionChangeEvent가 "item"속성에서 PropertyChangeEvent와 함께 전달되도록하는 것입니다. 어느 쪽이 "UPDATE"였는지 ("ADD"가 예상했던대로) 아닙니다. 해당 이벤트를 수동으로 전달하려고 시도하면 절대로 작동하지 않습니다 (예 : DataGrid가 업데이트되지 않음). 필자는 잠깐 itemUpdated를 고수해야한다는 것을 알고 있지만, dataprovider가 (두 가지 차원 모두에서) 커질 수 있기 때문에 성능은 나에게 관련이 있으며 후드에서 무슨 일이 벌어지고 있는지 이해하고 있습니다.

그리고이 모든 텍스트입니다. 그리고 응답하고 slightes 방법에 힌트 저를주는 사람에게 더 큰 감사를 읽을 모든 사람을위한,

:-(어도비 도움없이 그래서 큰 감사를 예상대로 I 혼란 나가와 (가능한 모든 먹으 렴 경우) 조금 더 FLES 이해할 수있다. 모든 관련의 최고

,

허버트

+0

나는 혼란 스럽다. 왜 하나의 배열을 여러 배열 컬렉션의 소스로 사용하고 있습니까?이 배열은 데이터 격자의 소스입니까? 왜 모든 DataGrid의 소스 인 1 ArrayCollection을 가지고 있지 않을까요? – Karthik

답변

1

을 당신은 각각 ArrayCollection.refresh()를 호출해야 dataProviders를 호출하여 소스 배열에 대한 새 변경 사항을 표시하는 DataGrid를 가져옵니다.

+0

물론 간단한 새로 고침으로 항상 트릭을 수행 할 수 있습니다. 그러나 그리드에서 꽤 많은 데이터를 가지고 있기 때문에 (그리고 예, 페이징과 물건), 완전히 새로 고침하면 전체 그리드를 다시 계산할 수 있습니다. 이는 단순히 하나의 항목을 추가 할 때 완전히 불필요합니다. itemUpdated의 아이디어입니다. 올바른 매개 변수가 제공된 경우 새로 고침을 유도하지는 않지만 적절한 이벤트를 발생시킵니다. refresh 메소드와 itemUpdated 메소드에서 일어나는 일을 비교하면됩니다. 이건 같은게 아니야. – cboese

+0

데이터 프로 바이더에 관해서 Flex API의 배경을 이해하는 사람은 아무도 없습니다.나의 초기 질문은 더 나은 성능을 얻기 위해 "refresh() - less"솔루션을 가리켰다.하지만 그런 방법이 없기 때문에, 나는이 대답을 받아 들일 것이다. (불완전하거나 내 의도가 아닌) Rubosto의 방법이 항상 작동 할 것이므로 (상당히 견고한 ;-)) Google에서이 스레드를 발견하고 공평하지 않은 사람들에게 명확하게 작성하십시오. – cboese