Я на самом деле работаю над кодом другого пользователя, но я не могу понять что-то, я нахожу, что доступ к датапровердеру очень специфичен в части mxml.Flex: arrayCollection in dataProvider
экстракт 1:
[Bindable]
public var adrDataList:ArrayCollection = new ArrayCollection();
[Bindable]
public var obj:Object = new Object();
экстракт 2:
adrDataList.getItemAt(0).id = null;
adrDataList.getItemAt(0).natureVoie = null;
adrDataList.getItemAt(0).numeroVoie = null;
adrDataList.getItemAt(0).nomVoie = null;
adrDataList.getItemAt(0).commune = null;
adrDataList.getItemAt(0).complementAdresse = null;
adrDataList.getItemAt(0).codePostal = null;
obj.index = i;
obj.statutGeocodage = _model.service.getItemAt(i).statutGeocodage;
obj.coordX = "484646868"
obj.coordY = "455446846"
adrDataList.addItemAt(obj, 0);
это MXML часть:
<view:CustomDataGrid id="dgAdr" height="80" width="989" allowMultipleSelection="true"
editable="{_model.isGeocodageActif}"
styleName="DataGrid" dataProvider="{adrDataList}" itemEditEnd="onEditItem(event)">
<view:columns>
<mx:DataGridColumn headerText="NumeroVoie" dataField="numeroVoie"/>
<mx:DataGridColumn headerText="NatureVoie" dataField="natureVoie"/>
<mx:DataGridColumn headerText="NomVoie" dataField="nomVoie"/>
<mx:DataGridColumn headerText="Commune" dataField="commune"/>
<mx:DataGridColumn headerText="CodePostal" dataField="codePostal"/>
<mx:DataGridColumn headerText="Géocod" editable="false">
<mx:itemRenderer>
<mx:Component>
<mx:Text text="{(data.coordX == 0)? '' : data.coordX} - {(data.coordY == 0)? '' : data.coordY}" />
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="Géocodage" editable="false" dataField="statutGeocodage">
<mx:itemRenderer>
<mx:Component>
<formatter:geocodBtn color="{data.statutGeocodage}" horizontalAlign="center"
enabledBtns="{outerDocument._model.isGeocodageActif}"
click="outerDocument.onGeoClick(data.id, data.numeroVoie, data.natureVoie, data.nomVoie, data.commune, data.codePostal, data.idTechnicien, data.complementAdresse,event)">
</formatter:geocodBtn>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</view:columns>
</view:CustomDataGrid>
То, что я не получаю почему data.coordX является за работой? она не должна быть data.obj.coordX
Благодаря
Ps: Я использую Flex SDK 3.5
Что вы хотите исследования как компонент Flex 'List' использует элемент ItemRenderer для отображения элементов списка. В «List» используется объединение объектов, так что он создает только столько объектов «ItemRenderer», сколько необходимо для отображения элементов списка **, которые в настоящее время отображаются **. Когда вы прокручиваете список, он будет повторно использовать существующие средства визуализации элементов, а не создавать новые. Для этого средство визуализации элементов определяет свойство 'data'. Поэтому в контексте средства рендеринга элементов текущий элемент в поставщике данных может ссылаться на это свойство 'data'. –
Примечание. Я упомянул выше о компоненте «Список», но то же самое относится к компонентам сетки данных (сетки расширяют «Список»). Кроме того, я ссылался на класс «ItemRenderer», который существует в Flex 4, в Flex 3 многие компоненты реализуют интерфейс «IDataRenderer» (не было официального класса ItemRenderer). –
Привет, вы можете использовать компонент ItemRenderer [link] https://blogs.adobe.com/aharui/2008/08/datagrid_itemeditor_with_two_i.html). Но сначала, чтобы решить вашу проблему, я бы использовал класс, например «adrObject», который будет иметь функцию getter, называемую g_coordX, примерно так: –