데이터 그리드에 다음과 같은 문제가 있습니다. 나는 클라이언트를 변경하는 comboBox를 가지고 클라이언트가 선택되면 시스템은 CheckBox와 두 개의 radioButton을 가진 ItemRenderer로 Datagrid를 채 웁니다. 처음으로 List를 채우면 모든 것이 잘 동작합니다.ItemRenderers는 목록에서 데이터를 변경 한 후 상태를 유지합니다.
클라이언트를 변경하고 이벤트를 트리거하여 해당 Datagrid의 내용을 변경하면 문제가 발생합니다. Datagrid dataProvider가 새 ArrayCollection으로 다시 선언되고 새 정보가 채워집니다.
질문은 콘텐츠가 변경되었지만 확인란의 상태가 이전과 동일하게 유지된다는 것입니다.
여기에 무슨 일이 일어 났습니까? 나는 그것을 이해할 수 없다.
EDIT :
private function showProductosTable(evt:ResultEvent, token:Object):void {
precioClienteModel.modelo.arrayPanelPrecioCliente = new ArrayCollection;
for each(var data:Object in evt.result as ArrayCollection) {
var pc:PanelPrecioClienteDatatype = new PanelPrecioClienteDatatype;
pc.ID = data.ID;
pc.clienteID = data.clienteID;
pc.productoID = data.productoID;
pc.producto = data.producto;
pc.proveedorID = data.proveedorID;
pc.proveedor = data.proveedor;
pc.productos_proveedorID = data.productos_proveedorID;
pc.cantidad_80 = data.cantidad_80;
pc.cantidad_100 = data.cantidad_100;
pc.kg_caja_80 = data.kg_caja_80;
pc.kg_caja_100 = data.kg_caja_100;
precioClienteModel.modelo.arrayPanelPrecioCliente.addItem(pc);
// Comprobamos si ya tenemos metido el ProductoID en nuestra Columna de Productos
if (!precioClienteModel.checkIfProductIDInList(pc.productoID)) {
precioClienteModel.modelo.arrayColumnaProductos.addItem({'productoID':pc.productoID, 'producto':pc.producto,
'proveedor1': {'value':0, 'selected':false},
'proveedor2': {'value':0, 'selected':false},
'proveedor3': {'value':0, 'selected':false},
'proveedor4': {'value':0, 'selected':false},
'proveedor5': {'value':0, 'selected':false},
'proveedor6': {'value':0, 'selected':false},
'proveedor7': {'value':0, 'selected':false},
'proveedor8': {'value':0, 'selected':false},
'proveedor9': {'value':0, 'selected':false},
'proveedor10': {'value':0, 'selected':false},
'proveedor11': {'value':0, 'selected':false},
'proveedor12': {'value':0, 'selected':false},
'proveedor13': {'value':0, 'selected':false},
'proveedor14': {'value':0, 'selected':false},
'proveedor15': {'value':0, 'selected':false}});
}
if (!precioClienteModel.checkIfProveedorIDInList(pc.proveedorID)) {
precioClienteModel.modelo.arrayFilaProveedores.addItem({'proveedorID':pc.proveedorID, 'proveedor':pc.proveedor});
}
}
}
및 데이터 격자는 :
<s:DataGrid id="preciosGrid" top="65" width="935" height="379" horizontalCenter="0" requestedRowCount="4"
dataProvider="{precioClienteModel.modelo.arrayColumnaProductos}">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="producto" headerText="Producto" width="150" editable="false"></s:GridColumn>
<s:GridColumn dataField="proveedor1" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor2" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor3" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor4" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor5" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor6" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor7" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor8" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor9" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor10" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor11" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor12" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor13" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor14" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
<s:GridColumn dataField="proveedor15" headerText="" width="52" editable="true" itemRenderer="renderers.PriceCellItemRenderer"></s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
과의 itemRenderer :
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
import spark.components.DataGrid;
private var _listData:BaseListData;
[Bindable]private var isSelected:Boolean = false;
override public function prepare(hasBeenRecycled:Boolean):void {
}
protected function lblData_doubleClickHandler(event:MouseEvent):void {
isSelected = !isSelected;
data[column.dataField]['selected'] = isSelected;
}
override public function set data(value:Object) : void {
super.data = value;
if (value != null)
lblData.text = data[column.dataField]['value'];
}
[Bindable]public function get listData() : BaseListData {
return _listData;
}
public function set listData(value:BaseListData) : void {
_listData = value;
}
]]>
</fx:Script>
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="{isSelected?0xCDCDCD:0xFFFFFF}"/>
</s:fill>
</s:Rect>
<s:Label id="lblData" width="100%" height="100%"
textAlign="center" verticalAlign="middle"
doubleClickEnabled="true" doubleClick="lblData_doubleClickHandler(event)"/>
감사합니다.
여기에 몇 가지 코드를 입력해야합니다. 나중에 추측해서는 안돼. – ethrbunny