Ajuda com ItemEditor no Flex 3

3 respostas
Sergiorsilva

Boa tarde pessoal do GUJ,

estou com um problema no meu AdvancedDataGrid, eu tenho uma coluna chamada quantidade e para determinados itens eu posso ou não alterar a quantidade, do ItemEditor eu passo um parâmetro, dizendo true ou false para saber se quantidade poderá ou não ser editada, a informação chega direitinho no itemRederer, porém não funciona, alguém tem uma ideía do que eu esqueci?

att.

3 Respostas

fbl.lucas

Cara posta o código ai que fica mais fácil ajudar.

Sergiorsilva

Esse é o Grid:

<mx:AdvancedDataGrid dataProvider="{transactionData.items}"
	designViewDataType="flat"
	editable="true"
	height="100%"
	id="gridItems"
	itemEditEnd="{onItemEditEnd(event)}"	
	sortExpertMode="true"
	sortableColumns="false"
	doubleClickEnabled="true"
	width="100%">
        <mx:AdvancedDataGridColumn dataField="quantity"
		editable="true"
		editorDataField="quantity"
		headerText="Qtde."
		id="columnQuantity"
		itemEditor="main.gui.BoxQuantity"
		labelFunction="{formatQuantity}"
		textAlign="right"
		width="70"/>
</mx:AdvancedDataGridColumn>

E o ItemEditor:

<?xml version="1.0" encoding="utf-8"?>
<sergio:NumberInput autoFocus="false"
	change="{onChange()}"
	creationComplete="{onCreationComplete()}"
	doubleClickEnabled="true"
	height="100%"
	selectOnFocus="true"
	tabEnabled="false"
	click="{onClick()}"
	width="100%"
	editable="{hasService}"
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:oitosoft="http://sergio.com.br/mxml">

	<mx:Script>
		<![CDATA[

			//------------------------------------------------------------------
			//
			// Variáveis
			//		
			//------------------------------------------------------------------

			/**
			 * Flag para controle de modificações manuais da quantidade.
			 */
			private var _modified:Boolean = false;
			
						
			/**
			* Flag para habilitar a edição do campo caso o ítem seja um serviço.
			*/
			private var _hasService:Boolean = false;

			//------------------------------------------------------------------
			//
			// Propriedades
			//		
			//------------------------------------------------------------------

			/**
			* Propriedade que define o valor do renderer.
			*/
			public function set quantity(value:Number):void {
				this.numericValue = value;
				_modified = false;
			}

			/**
			* @private
			*/
			public function get quantity():Number {
				return this.numericValue;
			}

			/**
			* Propriedade que identifica se houve alterações na quantidade.
			*/
			public function get modified():Boolean {
				return _modified;
			}

			/**
			* @inherited
			*/
			override public function set data(obj:Object):void {
				super.data = obj;
				var dataField:String = AdvancedDataGridListData(listData).dataField;
				this.precision = (data.hasOwnProperty('unitPrecision')) ? (data.unitPrecision) : (2);
				this.numericValue = data[dataField];
				_modified = false;
			}
			
			/**
			* Recupera a informação se o item do pedido é um serviço ou não.
			*/
			public function set hasService(hasService:Boolean):void {
				_hasService = hasService;	
			}
			
			/**
			* Retorna a informação se o item é um pedido ou não.
			*/
			[Bindable]
			public function get hasService():Boolean {
				return _hasService;
			}
			
			//------------------------------------------------------------------
			//
			// Métodos
			//		
			//------------------------------------------------------------------
			
			private function onCreationComplete():void {
				
				// Passa o foco para o campo.
				this.setFocus();
				
				// Se for um serviço, desabilita o campo.
				hasService = (data.hasService = 'Y') ? false : true;
				
			}
			
			private function onClick():void {
				
				// Passa o foco para o campo.
				this.setFocus();
				
				// Se for um serviço, desabilita o campo
				hasService = (data.hasService = 'Y') ? false : true;
			}
			
			private function onChange():void {
				
				// Passa o foco para o campo.
				this.setFocus();
				
				_modified = true;
				
				// Se for um serviço, desabilita o campo
				hasService = (data.hasService = 'Y') ? false : true;
			}
		]]>
	</mx:Script>
</sergio:NumberInput>
Cabazzo

Coloque os metodos updateDisplayList e commitProperties no final do seu método onClick.

Criado 22 de dezembro de 2011
Ultima resposta 3 de jan. de 2012
Respostas 3
Participantes 3