2009-11-13 6 views
1

GroupingCollection을 사용하여 내 고급 데이터베이스를 바인딩하고 있습니다. groupingcollection을 사용하여 날짜별로 데이터를 그룹화했습니다.Flex GroupingCollection : 하위 순환 루프

이제 코드를 통해 DataGrid의 데이터를 선택해야합니다. 누구든지이 작업을 수행하는 방법에 대한 아이디어가 있습니까? 내가 adg의 dataprovider를 통해 반복하고 선택에 대한 기준과 일치하는 항목을 선택해야합니다.

는 데이터의 평면 표현을 포함해야

감사합니다 :)

+0

GroupingCollection에 원본이 있습니까? – CookieOfFortune

+0

DataGrid에서 선택한 것으로 표시하고 싶습니까? 또는 누군가가 DataGrid를 클릭하면 항목 데이터를 선택해야합니까? – dustmachine

답변

1

좋아, 해석되는 질문에 따라이 코드는 선택한 그룹 연도와 일치하는 항목을 찾습니다. 처음 내가 AdvancedDataGrid dataProvider의 GroupingCollection을 얻을

[Bindable] 
public var myData:ArrayCollection = new ArrayCollection([ 
    {name:'Denise', grad:'2000'}, 
    {name:'Steph', grad:'1990'}, 
    {name:'Jane', grad:'2000'}, 
    {name:'Nicole', grad:'2000'}, 
    {name:'Donna', grad:'1990'}]); 

public function findStuff(e:Event):void { 
    var groupColl:GroupingCollection = adGrid.dataProvider.source; 
    var items:Object = groupColl.source; 

    var ac:ArrayCollection = new ArrayCollection(); 
    for (var i:int=0; i<items.length; i++) { 
     if (items[i].grad == e.target.text) { 
      ac.addItem(items[i].name); 
     } 
    } 
    Alert.show("selected items: " + ac.toArray()); 
} 

<mx:GroupingCollection id="coll" source="{myData}"> 
    <mx:Grouping> 
     <mx:GroupingField name="grad" /> 
    </mx:Grouping> 
</mx:GroupingCollection> 

<mx:AdvancedDataGrid id="adGrid" dataProvider="{coll}" 
         click="findStuff(event)" 
         initialize="coll.refresh()"> 
    <mx:columns> 
     <mx:AdvancedDataGridColumn headerText="name" dataField="name"/> 
    </mx:columns> 
</mx:AdvancedDataGrid> 

주 후, 나는 GroupingCollection에서 항목을 얻을 : 다음과 같이 나는 mx:AdvancedDataGridclick=findStuff(event)을 추가했다. 이것들은 하나의 단계로 결합 될 수 있지만,이 방법은 예제에서보다 쉽게 ​​읽을 수 있습니다. 찾고자하는 데이터가 정확히 무엇인지 알지 못하지만 데이터 item에서 name 필드를 가져 왔지만 전체를 가져올 수는 없습니다. item.

바라건대 이것은 올바른 방향으로 나아가는 단계입니다.

+0

먼지 청소 기계에 감사드립니다. 나는 이것을 시도 할 것이다. 시나리오는 그리드에 바인딩 된 arraycollection입니다. 내 응용 프로그램은 날짜별로 그룹화하는 옵션이 있습니다. 자, 날짜별로 그룹화하면 데이터 제공자를 그룹화 콜렉션으로 변경합니다. 따라서 데이터 제공자가 변경되면 그리드에서 선택한 항목의 상태를 유지하려고합니다. 그래서 dataprovider를 변경할 때 프로그래밍 방식으로 그리드에서 항목을 선택할 수 있습니다. 이 코드를 사용해 보겠습니다. – online19

+0

위의 코드에서'Alert.show' 바로 위에'adGrid.selectedItems = ac.toArray();를 써서 올바른 행을 강조 표시하기 위해 adGrid를 조작 해 볼 수 있습니다. 행/항목이 닫혀있는 나무/폴더에 있다면 아마 표시되지 않을 것입니다 ...이 문제가 해결되면 upvote가 인정 될 것입니다. – dustmachine

+0

물론입니다. 내가 이것을 시도하자. 감사합니다 :) – online19

0

source 속성을 알려 주시기 바랍니다.

+0

예. 그룹화 컬렉션은 arraycollection에 바인딩됩니다. 그것의 객체의 편평한 명부. 그러나 원하는 아이를 반복하고 선택해야합니까? 그것에 대해 어떤 단서가 있습니까? – online19

+0

당신이 선택한 것과 일치 할 때까지 그냥 반복 할 수 있습니다. – CookieOfFortune