Я сравниваю две коллекции массивов, предположительно, collection1 и collection2 и в коллекции 2 У меня есть флажок, что я делаю после нажатия кнопки изменения. Я сравниваю эти две коллекции массива, что я хочу, это то, что есть элемент соответствует соответствующий флажок будет автоматически выбирать ..Как сравнить две коллекции массива в flex, когда она соответствует флажку, проверяется
enter code here
for(var a:String in User360DegreePodCreationView.user360PodView.MyArray)
{
//loop though the second collection
for(var b:String in User360DegreePodCreation.user360PodCreation.fieldList.dataProvider)`
` { // сравнить коллекцию если (User360DegreePodCreationView.user360PodView.MyArray [а] == User360DegreePodCreation .user360PodCreation.fieldList.dataProvider [b] .columnName) {
var chkBox:CheckBox =new CheckBox;
chkBox = User360DegreePodCreation.user360PodCreation.fieldList.dataProvider[b].columnName as CheckBox;
chkBox.selected=true;
файл MXML
<s:List id="fieldList"
width="100%"
height="170"
enabled="{isEnabled}"
dataProvider="{model.profileTableColumns}"
click="fieldList_clickHandler(event)">
<s:itemRenderer>
<fx:Component id="itemRender">
<s:MXItemRenderer>
<fx:Script>
<![CDATA[
]]>
</fx:Script>
<s:CheckBox left="5"
label="{data.columnName}"
id="chkColumn"
/>
</s:MXItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
по нажатию кнопки я сравнивая одну коллекцию массив из DataGrid и один ArrayCollection из списка field..`
private function modifyBtn_clickHandler(event:MouseEvent):void
{
User360DegreePodCreation.user360PodCreation.isEnabled=true;
User360DegreePodCreation.user360PodCreation.isEditable=true;
User360DegreePodCreation.user360PodCreation.displayUpdateButton();
User360DegreePodCreation.user360PodCreation.fieldList.visible=true;
User360DegreePodCreation.user360PodCreation.list.visible =false;
var userProfile360TableChangeEvent:UserProfile360DegreeTableChangeEvent=new UserProfile360DegreeTableChangeEvent();
userProfile360TableChangeEvent.data.idnId=User360DegreePodCreation.user360PodCreation.drpTable.selectedItem.idnId;
userProfile360TableChangeEvent.data.dbPath=User360DegreePodCreation.user360PodCreation.drpTable.selectedItem.externalRefDBPath;
userProfile360TableChangeEvent.data.tableName=User360DegreePodCreation.user360PodCreation.drpTable.selectedItem.tableName;
userProfile360TableChangeEvent.successHandler=function():void
{
if (model.profileTableColumns != null && model.profileTableColumns.length != 0)
{
User360DegreePodCreation.user360PodCreation.onModify();
}
}
userProfile360TableChangeEvent.dispatch();
//Loop through the first collection
for(var a:String in User360DegreePodCreationView.user360PodView.MyArray)
{
//loop though the second collection
for(var b:String in User360DegreePodCreation.user360PodCreation.fieldList.dataProvider)
{
//compare collection
if(User360DegreePodCreationView.user360PodView.MyArray[a] == User360DegreePodCreation.user360PodCreation.fieldList.dataProvider[b].columnName)
{
var chkBox:CheckBox =new CheckBox;
chkBox = User360DegreePodCreation.user360PodCreation.fieldList.dataProvider[b].columnName as CheckBox;
//chkBox.selected=true;
//User360DegreePodCreation.user360PodCreation.fieldList.selectedItem
}
}
}
}
here is my datgrid arraycollection
var MyArray:ArrayCollection = new ArrayCollection(); //DATA ARRAY
trace(dgUser360View.selectedItem.podTitle);
for each(var objAux:Object in model.userProfile360DegreeViewDetailsVO.userProfile360Details) //FOR TYPE OBJECT
{
if(objAux.podTitle==dgUser360View.selectedItem.podTitle)
MyArray.addItem(objAux.columnNames) //ADD DATA IN ARRAY
спасибо за ур ответ @ Крис он отлично работает для пары ключевых значений, но мне нужно, чтобы у меня была одна коллекция массивов, динамический тип которой, например, onle, я принимаю какое-то значение, такое как myArray {анализ, id, порт} и во второй коллекции массивов Myaary2 {анализ Флажок, идентификатор флажок, порт флажок, Nuber флажок, адрес флажок} я хочу только согласующее значение коллекции массива получает и непревзойденная элемент остается непроверенной я делюсь с и то, что я сделал до даты
var modifiedProfileColumns:ArrayCollection = new ArrayCollection;
/*for(var b:int=0;b<model.profileTableColumns.length;b++)
{
modifiedProfileColumns.addItem({columnName:model.profileTableColumns[b].columnName,selection:"Yes"});
}*/
//for(var a:String in User360DegreePodCreationView.user360PodView.MyArray)
for(var b:int=0;b<model.profileTableColumns.length;b++)
{
//loop though the second collection
for(var a:String in User360DegreePodCreationView.user360PodView.MyArray)
{
//compare collection
if(User360DegreePodCreationView.user360PodView.MyArray[a] == model.profileTableColumns[b].columnName)
{
modifiedProfileColumns.addItem({columnName:model.profileTableColumns[b].columnName,selection:"true"});
break;
//modifiedProfileColumns.setItemAt({columnName:model.profileTableColumns[b].columnName,selection:"true"},b+1);
}
else
{
modifiedProfileColumns.addItem({columnName:model.profileTableColumns[b].columnName,selection:"false"});
}
}
}
fieldList.dataProvider = modifiedProfileColumns;
}
вот список codeing
<s:List id="fieldList"
width="100%"
height="170"
enabled="{isEnabled}"
click="fieldList_clickHandler(event)">
<s:itemRenderer>
<fx:Component id="itemRender">
<s:MXItemRenderer>
<fx:Script>
<![CDATA[
]]>
</fx:Script>
<s:CheckBox left="5"
label="{data.columnName}"
selected="{data.selection=='true'}"
id="chkColumn"/>
</s:MXItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
я получаю значение соответствия как проверенный но элемент во второй коллекции коллекции массива приходит трижды ..., как я предполагаю, что проблема с зацикливанием я не смогли найти его. Я всегда буду благодарен, если кто-нибудь может помочь мне найти решение ...
где вы разместили этот код? Внутри тега скрипта itemrenderer? –
Возможно, вы захотите поработать над этой линией, так как у нее плохие коды Smell. User360DegreePodCreation.user360PodCreation.fieldList.dataProvider [Ь] .columnNamE. –
yaa on click of button event Я сравниваю две коллекции массивов – praveen