DataGrid

Pessoal, boa tarde.
Gostaria de saber se existe outra forma de passar os valores do DataGrid para um label ou textinput sem ser assim dg.selectedItem.email.
Pois no meu caso, não vou saber o nome das colunas. Tem alguma forma dinâmica para recuperar esses valores do grid?

Assim é a forma que tenho que conhecer as colunas e não está servindo pra mim.

        <mx:DataGrid id="dg" color="0x323232" width="100%" rowCount="3" dataProvider="{employees}"/>

        <mx:Form color="0x323232" width="100%" height="100%"  paddingTop="0" paddingBottom="0"  >
        
                   <mx:FormItem label="Name" paddingTop="0" paddingBottom="0">
                <mx:Label text="{dg.selectedItem.name}"/>
                </mx:FormItem>
                <mx:FormItem label="Email" paddingTop="0" paddingBottom="0">
                    <mx:Label text="{dg.selectedItem.email}"/>
                </mx:FormItem>
                <mx:FormItem label="Phone" paddingTop="0" paddingBottom="0">
                    <mx:Label text="{dg.selectedItem.phone}"/>
                </mx:FormItem>

        </mx:Form>

Obrigado!

já tenteou na hora que ele selecionar um item da datagrid, chamar um evento e guardar o item selecionado em um objeto mais ou menos assim

[code]var itemSelecionado:Object = dg.selectedItem; //pega objeto seleciona e o guarda em uma variavel

//atribuir ao campos
meuTextInput.text = itemSelecionado.name.toString(); //atribui o nome ao TextInput[/code]

não sei se é isso que precisa qualquer coisa avisa ai!

Não Iven, pq assim vai dá no mesmo pra mim. Queria algo como se fosse um vetor ou uma matriz… tipo

dg.selectedItem[0,1] // onde 0 = linha e 1 = coluna.

Obrigado!

Tenta assim:

<mx:FormItem label="Name" paddingTop="0" paddingBottom="0"> <mx:Label text="{employees.getItemAt(dg.selectedIndex).name}"/> </mx:FormItem>

Oi feltraco, dessa forma que vc passou, ainda estou usando o atributo .name

Queria acessar o valor direto do datagrid, sem conhecer o arraycollection que o preenche.

Abraços!

Tenta assim entao…

O nome do atributo acredito que vc tem que saber… certo ?

Pois eh… é isso que eu queria saber, se eh obrigatório, se não tem outra forma de recuperar esse conteúdo do dg.

Valeu!

Sempre tem uma forma de se fazer.

Talvez voce possa setar um ID no DataGridColumn e pegar pelos childrens do DataGrid por esse ID.

Como vc pretende popular esse DG ?

Vai ser uma consulta no banco de dados…
É o seguinte, o dg é para consulta e único em toda a aplicação.

Vc pode ver que não coloco as colunas no dg, ele já se “molda” ao meu arraycollaction (cria as colunas)
Ai eu não vou saber quais os campos desse arraycollaction, para qnd eu clicar no dg poder recuperar os dados para os textinputs…

Valeu!

Vai ser uma consulta no banco de dados…
É o seguinte, o dg é para consulta e único em toda a aplicação.

Vc pode ver que não coloco as colunas no dg, ele já se “molda” ao meu arraycollaction (cria as colunas)
Ai eu não vou saber quais os campos desse arraycollaction, para qnd eu clicar no dg poder recuperar os dados para os textinputs…

Valeu!

Se “molda” sozinho ?
Sinceramente nao vi vantagem nisso nao.

Qual a intencao em ter um DG para toda a aplicacao ?
Se eh customizar, extende um pesonaliza e usa ele nos forms.

As informações que você precisa estão nos objetos DataGridColumn. Mesmo que não tenha sido você que os instanciou, eles estão disponíveis. Um exemplo simples de como fazer isso:

<mx:Form>
	<mx:FormItem label="{DataGridColumn(dg.columns[0]).dataField}">
		<s:Label text="{dg.selectedItem[DataGridColumn(dg.columns[0]).dataField]}" />
	</mx:FormItem>
	<mx:FormItem label="{DataGridColumn(dg.columns[1]).dataField}">
		<s:Label text="{dg.selectedItem[DataGridColumn(dg.columns[1]).dataField]}" />
	</mx:FormItem>
</mx:Form>
<mx:DataGrid id="dg" dataProvider="{employees}" />

Nesse trecho de código, tem o problema de você ter que saber o número de propriedades do objeto que será inserido no DataGrid (tem que especificar dg.columns[0], dg.columns[1]…). Para evitar esse problema, você pode criar os objetos via ActionScript mesmo (sem usar MXML). Percorra o array columns do DataGrid e pra cada column instancie um novo FormItem e Label e adicione na tela.

Abraço.