Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dmorsoleto

Problema com array collection

Recommended Posts

Fala galera.

 

Seguinte tenho um código aki q faz uma pesquisa no banco de dados em php gera um xml que eh lido pelo flex. O php está funcionando certinho. Meu problemas é o seguinte. Se eu tenho mais de 1 regsitro retornando da consulta o código funciona lindo, preenche o datagrid e fica tudo beleza. Agora se a consulta retorna só um registro ele nao aparece nada no datagrid. Já vi pelo alert que o metodo de retornar um conteudo de um campo muda, pois nao sei porque o felx nao esta aceitando o datalis[0].cliente, e se tento retornar event.target.data.row.cliente ele retorna o valor q quero. Segue o código para vcs tentarem me dar uma luz...

vlws

 

FLEX:

<mx:VBox label="Arquivos Disponíveis" click="mudaAba(1)" width="100%" height="100%">
			<mx:DataGrid width="100%" dataProvider="{datalist}" id="dg" itemClick="baixarArquivo(event)">
				<mx:columns>
					<mx:DataGridColumn headerText="Arquivos" dataField="nome"/>
					<mx:DataGridColumn headerText="Tipo do Arquivo" dataField="tipo"/>
				</mx:columns>
			</mx:DataGrid>
		</mx:VBox>

 

AS:

 

[bindable]
public var datalist:ArrayCollection;

private function respostaArquivos(event:ResultEvent):void{
   //Alert.show(""+event.result.data.row.cliente+"");
   datalist = event.result.data.row;
   Alert.show(""+datalist[0].cliente+"");
   var rowcount:String = event.result.data.num;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema consiste pois você não está inicializado:

 

[bindable]
public var datalist:ArrayCollection;

private function respostaArquivos(event:ResultEvent):void{

   datalist = new ArrayCollection(event.result as Array); //você colocou assim: event.result.data , se esse data é um array la do php e que você ta retornando pra ca então você muda o que eu fiz para event.result.data 
   Alert.show(""+datalist[0].cliente+"");
   var rowcount:String = event.result.data.num;
}

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola!!!

 

aconteceu isso comigo já :angry:

 

eu solucionei da seguinte forma....

 

Modificando o php para gera um filho em branco após o comando while :P

 

<?php
//include
require_once("conecta.php");

//seleciona o banco
$select = mysql_select_db($banco,$link) or die ("Erro ao conecta com o banco ".mysql_error());

//faz a busca no banco
$busca = mysql_query("Select * FROM emprestimo_apostila WHERE devolvido = 'NÃO' order by horario") or die ("Não foi possivel realizar a busca ".mysql_error());

//total de retorno
$total = mysql_num_rows($busca);

//cria o xml
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>";
echo "<raiz>";
while($linha = mysql_fetch_array($busca)){
//formata a data que vem do banco
$nova_data = explode("-",$linha['data']);
$data = $nova_data[2]."/".$nova_data[1]."/".$nova_data[0];
//escreve o xml
echo "<emprestimo>\n";
echo "<id>".$linha['id']."</id>\n";
echo "<data>".$data."</data>\n";
echo "<horario>".$linha['horario']."</horario>\n";
echo "<educador>".$linha['nome_educador']."</educador>\n";
echo "<aluno>".$linha['nome_aluno']."</aluno>\n";
echo "<apostila>".$linha['apostila']."</apostila>\n";
echo "<devolvido>".$linha['devolvido']."</devolvido>\n";
echo "</emprestimo>";
}

//necessario para exibir na busca caso retorne apenas 1 registro
echo "<emprestimo>\n";
echo "<id></id>\n";
echo "<data></data>\n";
echo "<horario></horario>\n";
echo "<educador></educador>\n";
echo "<aluno></aluno>\n";
echo "<apostila></apostila>\n";
echo "<devolvido></devolvido>\n";
echo "</emprestimo>";
echo "</raiz>";

mysql_free_result($busca);
?>

 

dá uma testada para ver se soluciona seu caso!!

 

abrç

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.