Ir para conteúdo

POWERED BY:

Arquivado

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

lienwein

Carregar dados num DataGrid

Recommended Posts

olá a todos

 

por favor gosteria de pedir a juda de vcs no seguinte, eu tenho um data grid vazio, só com as colunas criadas e qeuro pegar dados do banco usando o ASP e coloca-los no datagrid, apesar de parecer simples não estou conseguindo fazer isso e ja estou tentando desde 6/6. se algeum souber como faço agradeço. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

a outra duvida é que preciso colocar uma combobox dentro desse datagrid, apesar de saber que dá não sei como fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que no teu caso é interessante gerar um xml no asp e importar para o flash como xml.ai é só colocar para o datadrig importar pelo comandomy_datagrid.dataProvider = Objeto; //onde my_datagrid é a instancia e Objeto é o objeto gerado do xml com os valoresum exemplo de objeto que importa facinho é esse:Objeto = [{name:"Chris", price:"Priceless"}, {name:"Nigel", price:"cheap"}]; // onde name e price são as colunas do datagrid.agora, colocar o combobox eu não faço nem idéia... Eu já vi um esquema de carregar umas fotos ou MC´s, mas eu não consegui colocar...Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em PHP, com o que eu trabalho, existe uma classe que se chama AMFPHP e que se comunica com o flash via flash remoting.É muito bom porque é possível enviar uma consulta inteira do BD (com vários campos e várias linhas) para o flash... Eu não sou 100% conhecedor do datagrid, mas estou com um projeto em que tive que dar uma estudada nele...Estou usando esse AMFPHP e não sei como se faria por XML.Se forem poucas informações que virão do banco de dados, dá para receber por loadVars() e manipular os valores no flash para importar no datagrid.Uma solução é ver se não existe um esquema em ASP que se comunique com o flash de forma parecida com o AMFPHP, que simula um server flash.Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera ola de novo,

 

 

seguinte eu tenho um codigo quase pronto o meu arquivo ASP ta assim:

 

<!--#include file="../inc/conexao_test_abre.asp" --><!--#include file="../inc/conexao_abre.asp" --><!--#include file="inc/funcoes.asp"--><!--#include file="../inc/funcoes.asp"--><!--#include file="../inc/config.asp"--><%SQL = "SELECT DT_MESANO, CD_SI FROM F_TES_SI "SQL = SQL + "WHERE DT_MESANO IS NOT NULL"set rs = conexaotest.execute(SQL)Mes = request.form("Mes")while not rs.EOF	Data = rs("DT_MESANO")	CD = RS("CD_SI")	Data = day(Data)	response.write(Data)	if (Mes = Data) then		SQL2 = "SELECT DESCRICAO, VALOR, TIPO, CD_SI FROM F_TES_BEM "		SQL2 = SQL2 + "WHERE CD_SI= '"&CD&"'"		SET RS2 = CONEXAOTEST.EXECUTE(SQL2)	END IF	i = 1	Dp = ""	while Not RS2.EOF		Desc = RS2("DESCRICAO")		Valor = RS2("VALOR")		Tipo = RS2("TIPO")		Dp = Dp + "{Cod:"&i&", Descrição:"""&Desc&""", Valor:"&Valor&"}"		RS2.Movenext		if Not RS2.EOF then			Dp = Dp + ",  "		end if	wendRS.MOVENEXTwendresponse.write "&nome="&Dp%><!--#include file="../inc/conexao_test_fecha.asp"-->

e meu Action script ta assim:

 

System.useCodepage = true;import mx.controls.Alert;//caminho do tabMes.tabIndex = 0;DescricaoBem.tabIndex = 1;//variaveisvar dados:LoadVars = new LoadVars();var comboListener:Object = new Object();//Ajeitando o DataGridDescricaoBem.addColumnAt(0, "Cod");DescricaoBem.addColumnAt(1, "Descrição");DescricaoBem.addColumnAt(2, "Valor");DescricaoBem.getColumnAt(0).headerText = "Cód.";DescricaoBem.getColumnAt(0).editable = false;DescricaoBem.getColumnAt(0).width = 35;DescricaoBem.getColumnAt(1).width = (DescricaoBem.width-DescricaoBem.getColumnAt(0).width)/2;DescricaoBem.getColumnAt(2).width = (DescricaoBem.width-DescricaoBem.getColumnAt(0).width)/2;DescricaoBem.vScrollPolicy = "auto";// listeners da comboboxcomboListener.change = function() {	trace("teste");	_root.dados.Mes = _root.Mes.selectedIndex;	trace(_root.dados.Mes);	if (_root.dados.Mes != 0) {		trace("entro no If");		_root.dados.sendAndLoad("resumo_si.asp" , dados, "post");					}		};dados.onLoad = function(){	DescricaoBem.dataProvider = [this.nome];	Alert.show(DescricaoBem.dataProvider, "teste");}// adicionando os listenersMes.addEventListener("change", comboListener);

onde DescricaoBem é o datagrid e Mes é um ComboBox, até agora ele pega os dados do asp e deixa arrumadinho, o problema é que ele num insere no data grid, nem mostra nenhum erro, alguem sabe oq modificar pra ajeitar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao entendo nada de ASP, entao nao posso te ajudar com esse codigo. Como o colega falou embaixo o datagrid tem que ser populado com um array de objetos. Entao, tens que dar um jeito de transformar teus dados nesse modelo.dataGrid.dataProvider = [{},{},{},{}]; onde cada {} eh um objeto.Quanto ao lance do combo, eh bem tranquilo. Da uma pesquisada em CellRenderer, tem uma penca de material e exemplo na net. Se tiver problema, soh gritar

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela ajuda, o asp ta enviando o arquivo nessa linha:

 

Dp = Dp + "{Cod:"&i&", Descrição:"""&Desc&""", Valor:"&Valor&"}"

Tem um if pra adicionar uma virgula se num for o ultimo.

 

ai ele manda beleza, chega no flash eu peço pra dar um alert só pra var se foi realmnete mandado, e ele aparece do jeito que devia, mas parece que o dataProvider num funciona.

 

por exemplo eu peguei só um do banco, ai ele ia aparecer assim:

 

no codigo:

DescricaoBem.dataProvider = [this.nome];

Supostamente quando tivesse sendo executado, apareceria assim:

 

DescricaoBem.dataProvider = [{Cod:1, Descrição:"ASd", Valor:123}];

mas mesmo qeu fique assim, como mostra o alert, ele num criaa linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu faço é contruir o objeto no flash a partir das variáveis que o PHP (no seu caso ASP), retorna.

 

No seu caso, acho que isso funciona

Do server retorna para o flash, separado:

 

Dp = "Cod=1,Descrição='coisa',Valor=50/Cod=2,Descrição='teste',Valor=100";

 

Ai no flash eu manipulo jogando para um array ficando assim:

 

teste = Array({Cod:'1', Descrição:'coisa', Valor:'50'},{Cod:'2', Descrição:'teste', Valor:'100'});

 

é um trabalho meio chato com split para separar os objetos (retornados separados por / ), um split para separar os parâmetros com seus valores (retornados separados por , ) e depois outro split para separar o dado do valor (retornados por =)

 

Ai você faz um for que monta tudo... algo assim:

 

obj = Dp.split("/");

for (i=0; i<obj.length; i++) {

valores = obj.split(",");

for (j=0; j<valores.length; j++) {

valores[j] = valores[j].split("=");

}

resultado = {valores[0][0]+":"+valores[0][1]+","+valores[1][0]+":"+valores[1][1]+","+valores[2][0]+":"+valores[2][1]}

}

 

mais ou menos assim.... tem outras formas de fazer tbm...

 

ai você coloca o

 

DescricaoBem.dataProvider = resultado;

 

Não testei, fiz de cabeça aqui....

Acho que funciona....

 

Testa ai e qualquer coisa posta

 

Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu o seguinte erro, eu ja entendi o codigo mas num sei oq é esse erro, num sei onde el quer esse ":"

 

**Error** Scene=Scene 1, layer=AS, frame=1:Line 41: ':' expected

resultado = {valores[0][0]+":"+valores[0][1]+","+valores[1][0]+":"+valores[1][1]+","+valores[2][0]+":"+valores[2][1]};

Compartilhar este post


Link para o post
Compartilhar em outros sites

falha minha... tem que ser assim:

 

resultado = {valores[0][0]:valores[0][1],valores[1][0]:valores[1][1],valores[2][0]:valores[2

][1]};

 

sem as aspas...

mas eu não testei a action inteira então não tenho certeza se vai funcionar..

 

Acredito que sim...

 

Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, o codigo todo tá assim:

 

System.useCodepage = true;import mx.controls.Alert;//caminho do tabMes.tabIndex = 0;DescricaoBem.tabIndex = 1;//variaveisvar dados:LoadVars = new LoadVars();var comboListener:Object = new Object();//Ajeitando o DataGridDescricaoBem.addColumnAt(0, "Cod");DescricaoBem.addColumnAt(1, "Descrição");DescricaoBem.addColumnAt(2, "Valor");DescricaoBem.getColumnAt(0).headerText = "Cód.";DescricaoBem.getColumnAt(0).editable = false;DescricaoBem.getColumnAt(0).width = 35;DescricaoBem.getColumnAt(1).width = (DescricaoBem.width-DescricaoBem.getColumnAt(0).width)/2;DescricaoBem.getColumnAt(2).width = (DescricaoBem.width-DescricaoBem.getColumnAt(0).width)/2;DescricaoBem.vScrollPolicy = "auto";// listeners da comboboxcomboListener.change = function() {	trace("teste");	_root.dados.Mes = _root.Mes.selectedIndex;	trace(_root.dados.Mes);	if (_root.dados.Mes != 0) {		trace("entro no If");		_root.dados.sendAndLoad("resumo_si.asp" , dados, "post");					}		};dados.onLoad = function(){	obj = Dp.split("/");	for (i=0; i<obj.length; i++) {		valores = obj[i].split(",");		for (j=0; j<valores.length; j++) {			valores[j] = valores[j].split("=");		}		resultado[i] = {valores[0][0]:valores[0][1], valores[1][0]:valores[1][1], valores[2][0]:valores[2][1]};	DescricaoBem.dataProvider = resultado;	Alert.show(Bem_Array, "teste");	}// adicionando os listenersMes.addEventListener("change", comboListener);

porem o mesmo erro persiste

peço desculpas antecipado caso tenha posto em algo errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você der um trace em resultado[0], o que aparece?

 

PS: resultado = {valores[0][0]:valores[0][1], valores[1][0]:valores[1][1], valores[2][0]:valores[2][1]}; é tudo na mesma linha... o forum que quebra...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uns testes e funcionou....

 

faz assim:

 

com o ASP retornando os dados neste formato

 

Dp = "1,coisa,50/2,teste,100";

 

onde o primeiro dígito é o código, o "coisa" é a descrição e o 50 é o valor, e depois da barra a mesma coisa para o outro dado...

 

usa esse código:

 

System.useCodepage = true;import mx.controls.Alert;//caminho do tabMes.tabIndex = 0;DescricaoBem.tabIndex = 1;//variaveisvar dados:LoadVars = new LoadVars();var comboListener:Object = new Object();//Ajeitando o DataGridDescricaoBem.addColumnAt(0, "Cod");DescricaoBem.addColumnAt(1, "Descrição");DescricaoBem.addColumnAt(2, "Valor");DescricaoBem.getColumnAt(0).headerText = "Cód.";DescricaoBem.getColumnAt(0).editable = false;DescricaoBem.getColumnAt(0).width = 35;DescricaoBem.getColumnAt(1).width = (DescricaoBem.width-DescricaoBem.getColumnAt(0).width)/2;DescricaoBem.getColumnAt(2).width = (DescricaoBem.width-DescricaoBem.getColumnAt(0).width)/2;DescricaoBem.vScrollPolicy = "auto";// listeners da comboboxcomboListener.change = function() {	trace("teste");	_root.dados.Mes = _root.Mes.selectedIndex;	trace(_root.dados.Mes);	if (_root.dados.Mes != 0) {		trace("entro no If");		_root.dados.sendAndLoad("resumo_si.asp" , dados, "post");					}		};dados.onLoad = function(){	  obj = Dp.split("/");	  for (i=0; i<obj.length; i++) {			valores = obj[i].split(",");			ob = {Cod:valores[0],Descrição:valores[1],Valor:valores[2]}			DescricaoBem.addItemAt(i,ob);	  }	  Alert.show(Bem_Array, "teste");}// adicionando os listenersMes.addEventListener("change", comboListener);

Vai funcionar...

 

Falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera, aroveitando o tópico, como que eu faço o seguinte.eu tenho a datagrid já com os valores, dai eu quero que quando eu clico naquela linha de registro eu mostro no trace os valores dos campos daquela linha.Se alguem poder me ajudar

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.