Я работаю во флексах несколько лет, и мне кажется, что это потрясающий инструмент.Несколько дней назад у меня было странное поведение в моей сетке данных.
У меня есть php-сервис, который читает базу данных и отправляет эти данные в felx.Служба и информация, сохраненная в поставщике данных в flex, работают без проблем, но когда сетка данных показывает загруженную информацию, она показывает много ячеек с неверными данными.Показанные данные, кажется, смешаны с другими клетками.Например, у меня есть два регистра: «Лампочка красная» и «Собака опасна».Но сетка данных показывает, например, «Лампочка опасна» или «Собака красная».
Когда я вижу провайдера данных в точке останова, все данные верны.
Но это даже очень странно, когдаЯ щелкаю по проблемной ячейке, это автоматически изменяет ее содержимое на правильные значения.
Я не нашел возможной причины, и я теряю голову.Кроме того, я пробовал решения, такие как проверка функций, я отключил сетку данных и кеш браузера и перерисовал все компоненты.Но, похоже, ничего не работает.Может быть, проблема с флэш-плеером?
Любая помощь будет принята с благодарностью.Спасибо.
одна картинка (всегда другая)
код ...
<?xml version="1.0" encoding="utf-8"?>
<fx:Script>
<![CDATA[
protected function btnBuscar_clickHandler(event:MouseEvent):void{//Calls the searching service
dfFechaOtrosDetalles.text = "";
if ((txtBuscarId.text == "") && (dfBuscarFecha.text == "") && (comboBuscarCiudades.textInput.text == "") && (txtBuscarEmpresa.text == "") && (txtBuscarSucursal.text == "") && (txtBuscarObra.text == "") && ((comboBuscarEstado.selectedItem == " ") || (comboBuscarEstado.selectedItem == "")))
txtBuscarId.setFocus();
else
if (comboBuscarCiudades.textInput.text == "")
getAllPropuestaResult.token = propuestaService.buscarPropuesta(txtBuscarId.text.toString(),dfBuscarFecha.text,RBGRangoBusquedaFecha.selectedValue.toString(),"",txtBuscarEmpresa.text,txtBuscarSucursal.text,txtBuscarObra.text,comboBuscarEstado.selectedItem);
else
getAllPropuestaResult.token = propuestaService.buscarPropuesta(txtBuscarId.text,dfBuscarFecha.text,RBGRangoBusquedaFecha.selectedValue.toString(),comboBuscarCiudades.selectedItem.id,txtBuscarEmpresa.text,txtBuscarSucursal.text,txtBuscarObra.text, comboBuscarEstado.selectedItem);
}
]]>
</fx:Script>
<fx:Declarations>
<s:CallResponder id="getAllPropuestaResult"/>
<propuestaservice:PropuestaService id="propuestaService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
<PropuestasDataType:PropuestasDataType id="propuestasDataType"/>
<fx:Binding source="dgPropuestas.selectedItem as PropuestasDataType" destination="propuestasDataType"/>
<!-- MAIN INTERFACE-->
<mx:DataGrid x="17" y="40" id="dgPropuestas" dataProvider="{getAllPropuestaResult.lastResult}" styleName="grid" height="184" change="dgPropuestas_changeHadler(event)">
<mx:columns>
<mx:DataGridColumn headerText="ID" dataField="id" width="40"/>
<mx:DataGridColumn headerText="Ciudad" dataField="ciudydepto" width="150" itemRenderer="mxml.IRRichEditableDataGrid"/>
<mx:DataGridColumn headerText="Empresa" dataField="empresa" width="150" itemRenderer="mxml.IRRichEditableDataGrid"/>
<mx:DataGridColumn headerText="Sucursal" dataField="sucursal" width="130" itemRenderer="mxml.IRRichEditableDataGrid"/>
<mx:DataGridColumn headerText="Obra" dataField="obra" width="200" itemRenderer="mxml.IRRichEditableDataGrid"/>
<mx:DataGridColumn headerText="Valor" dataField="valor" width="100" itemRenderer="mxml.IRRichEditableDataGrid"/>
</mx:columns>
</mx:DataGrid>
У меня все еще есть проблема, но теперь я понимаю, что это проблема, связанная с itemrenderers.У меня есть IR, который позволяет выбирать и копировать текст из ячеек, но я проверил, и эта ошибка не появляется, если нет никакого связанного с IR.Вот код ИК.
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
focusEnabled="true">
<s:RichEditableText id="lblData" top="0" left="2" right="0" bottom="0" text="{dataGridListData.label}" selectable="true" editable="false" height="35" verticalAlign="middle"/>