Não consegui aqui :/

a coluna no data grid ta assim:

<mx:DataGridColumn headerText="Tipo" dataField="tipoReuniao"
                                                width="150"
                                                labelFunction="getTipoReuniao"/>

label function:

public function getTipoReuniao(item:Object,
column:DataGridColumn):String{
                                return item['tipo_reuniao']['tr_nome'];
                        }

A pesquisa está assim:

@SuppressWarnings("unchecked")
        public List<Reuniao> find(Date dataInicial, Date dataFinal,
TipoReuniao tipo)
                        throws Exception {
                return getHibernateTemplate().find("from Reuniao r INNER JOIN
r.tipoReuniao tr " +
                                "WHERE tr.tr_codigo = ? AND r.reun_data BETWEEN 
? AND ? ORDER BY
reun_data ASC",
                                new Object[] {tipo.getTr_codigo(), dataInicial, 
dataFinal});
        }

Ela está funcionando PERFEITAMENTE, pois, quando debugo ele me
preenche o array listReuniao com os dados certos.So a única diferença
que percebi é a seguinte.EX:

A pesquisa no banco retorna 5 resultados

Consulta sem Inner Join:
*Dentro do Array 5 objetos Reuniao (utilizo apenas o dateField no
Datagrid ele apresenta corretamente)
*Para preencher os campos da tabela Reuniao no datagrid só preenchia
com o nome do campo. Ex: reun_data
*Para preencher o nome do tipo da reunião, usava uma labelFunction.
Ex: return tipoReuniao.tr_nome;

Consulta com Inner Join:
Dentro do Array tem 5 Arrays cada array tem 2 objetos um objeto
Reuniao e um objeto TipoReuniao
*Não sei como preencher nem os campos da tabela Reuniao nem os campos
da tabela TipoReuniao

Quando faço a pesquisa com inner join me retorna esse erro:

TypeError: Error #1010: A term is undefined and has no properties.
        at br.com.cauirs.maconaria.view.screen::CadastroReuniao/getTipoReuniao
()[F:\Projetos\SisMaconaria\src_flex\br\com\cauirs\maconaria\view
\screen\CadastroReuniao.mxml:216]
        at mx.controls.dataGridClasses::DataGridColumn/itemToLabel()[C:
\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls
\dataGridClasses\DataGridColumn.as:1410]
        at mx.controls.dataGridClasses::DataGridBase/makeListData()[C:
\autobuild\3.2.0\frameworks\projects\framework\src\mx\controls
\dataGridClasses\DataGridBase.as:1328]
        at mx.controls::DataGrid/http://www.adobe.com/2006/flex/mx/
internal::setupRendererFromData()[C:\autobuild\3.2.0\frameworks
\projects\framework\src\mx\controls\DataGrid.as:1645]
        at mx.controls::DataGrid/commitProperties()[C:\autobuild
\3.2.0\frameworks\projects\framework\src\mx\controls\DataGrid.as:1608]
        at mx.core::UIComponent/validateProperties()[C:\autobuild
\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:5807]
        at mx.managers::LayoutManager/validateProperties()[C:\autobuild
\3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:
539]
        at mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild
\3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:
689]
        at Function/http://adobe.com/AS3/2006/builtin::apply()
        at mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild
\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8628]
        at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild
\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8568]

A linha 216 do datagrid é a seguinte:

public function getTipoReuniao(item:Object,
column:DataGridColumn):String{
                                return item['tipo_reuniao']['tr_nome']; //linha 
216
                        }


A minha duvida acho que esta bem explicada, e parece ter uma simples
resolução.

Raciocinando um pouco:

*O primeiro array contem 5 arrays
*Cada um desses arrays tem 2 objetos

Na função estou referenciado assim: return item['tipo_reuniao']
['tr_nome'];
Ou seja, ja acessa diretamente ??Tem algo errado...

Precisaria primeiro acessar a array depois o outro array e depois só
pegar o objeto.Só que mesmo debugando vi que esses arrays não tem id
ou um nome que eu possa usar para referencia-los, então como acessá-
los?

Resumindo: Preciso saber como acessar esses objetos que estão dentro
desses arrays sem nomes, ou então, qual outra maneira posso realizar
as consultas que utilizem duas ou mais tabelas?
On 22 jan, 21:09, RafaelViana <[email protected]> wrote:
> Eu conheco a labelFunction, uso ela para formatar as datas.Mas não
> tinha pensado nela nesse caso...Vou dar uma olhada, mas não sei com
> qual nome me refiro a essa array...
>
> On 22 jan, 19:03, Marco Catunda <[email protected]> wrote:
>
>
>
> > Rafael,
>
> > De uma olhada na propriedade 'labelFunction' do DataGrid
>
> >http://livedocs.adobe.com/flex/2/langref/mx/controls/listClasses/List...
>
> > Com essa propriedade você poderá criar uma função e trabalhar com o
> > dado do jeito que vc
> > quiser.
>
> > Para o seu problema seria algo semelhante com isso:
>
> > public function labelFunction(item:Object, column:DataGridColumn):String {
> >    return item['InnerJoinTable']['Field'];
>
> > }
>
> > --
> > Marco Catunda
>
> > 2009/1/21 RafaelViana <[email protected]>:
>
> > > Quando a pesquisa não utiliza inner join, o array é preenchido com
> > > objetos do tipo Reuniao, quando a pesquisa utiliza inner join  ele é
> > > preenchido com Arrays e dentro de cada array tem um objeto Reuniao e
> > > um objeto TipoReuniao
>
> > > Pesquisa com Inner Join:
>
> > > @SuppressWarnings("unchecked")
> > >        public List<Lancamento> findByDateAndUser(Date dataInicial,
> > >                        Date dataFinal, User user) throws Exception {
> > >                return getHibernateTemplate().find("from Lancamento l 
> > > INNER JOIN
> > > l.user as i WHERE i.user_codigo = ? AND l.lanc_data BETWEEN ? AND ?" +
> > >                                "ORDER BY lanc_data ASC", new Object[] 
> > > {user.getUser_codigo(),
> > > dataInicial, dataFinal});
> > >        }
>
> > > Pesquisa sem Inner Join:
>
> > > @SuppressWarnings("unchecked")
> > >        public List<Lancamento> findByDate(Date dataInicial, Date 
> > > dataFinal)
> > > {
> > >                return getHibernateTemplate().find("from Lancamento l WHERE
> > > l.lanc_data BETWEEN ? AND ?" +
> > >                                "ORDER BY lanc_data ASC", new Object[] 
> > > {dataInicial, dataFinal});
> > >        }
>
> > > No DataGrid quando as pesquisas não utilizavam inner join, eu usava o
> > > dataField do DataGridColumn dataField="reun_data" acessava o objeto
> > > Reuniao diretamente, agora que ele retorna o array como faço para
> > > acessar o objeto reuniao dentro do Array?
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a