Comunidad de diseño web y desarrollo en internet online

Leer información de un DataGrid

Citar            
MensajeEscrito el 21 Abr 2009 04:44 am
Hola a todos, yo nuevamente jaja :D

Quiero ahora solicitar su ayuda para que me digan cómo es que puedo leer información que tengo en un DataGrid, por ejemplo tengo mi código php:

Código :

<?php
//connect to mysql
$MySQLConnection = mysql_connect( "127.0.0.1", "root", "pass" ) or die(mysql_error());
//load the database
mysql_select_db( "acda" );
//get information from the test table
$Query = "SELECT * from cursos WHERE cat_curso='Docentes'";
$Result = mysql_query( $Query );
/* print out your own XML */
print "<doce>\n";
while( $Row = mysql_fetch_object( $Result ) )
{
   print "<curso><id_curso>".$Row->id_curso."</id_curso><nom_curso>".$Row->nom_curso."</nom_curso><cat_curso>".$Row->cat_curso."</cat_curso><descri_curso>".$Row->descri_curso."</descri_curso></curso>\n";
}
print "</doce>";
/*************************************************************************************************************/
$Querya = "SELECT * from cursos WHERE cat_curso='Administrativos'";
$Resulta = mysql_query( $Querya );
/* print out your own XML */
print "<admin>\n";
while( $Rowa = mysql_fetch_object( $Resulta ) )
{
   print "<curso><id_curso>".$Rowa->id_curso."</id_curso><nom_curso>".$Rowa->nom_curso."</nom_curso><cat_curso>".$Rowa->cat_curso."</cat_curso><descri_curso>".$Rowa->descri_curso."</descri_curso></curso>\n";
}
print "</admin>";

?>


Y mi código mxml:

Código :

<mx:HTTPService id="rest_service" url="http://127.0.0.1/ACDA/ACDA-debug/Prueba9.php"/>
    <mx:DataGrid left="0" right="0" top="0" 
        dataProvider="{rest_service.lastResult.doce.curso}" height="30%" id="datauno">
        <mx:columns>
           <mx:DataGridColumn headerText="ID curso" dataField="id_curso" id="uno_id"/>
            <mx:DataGridColumn headerText="Nombre" dataField="nom_curso" id="uno_nom"/>
            <mx:DataGridColumn headerText="Categoria" dataField="cat_curso" id="uno_cat"/>
            <mx:DataGridColumn headerText="Descripción" dataField="descri_curso" id="uno_descri"/>
        </mx:columns>
    </mx:DataGrid>
    <mx:DataGrid left="0" right="0" top="163" 
        dataProvider="{rest_service.lastResult.admin.curso}" height="30%">
        <mx:columns>
           <mx:DataGridColumn headerText="ID curso" dataField="id_curso"/>
            <mx:DataGridColumn headerText="Nombre" dataField="nom_curso"/>
            <mx:DataGridColumn headerText="Categoria" dataField="cat_curso"/>
            <mx:DataGridColumn headerText="Descripción" dataField="descri_curso"/>
        </mx:columns>
    </mx:DataGrid>


Y bueno, es un DataGrid donde se plantan los datos de mi base en MySQL, mi pregunta es:

Cómo puedo hacer un número de botones acorde a el numero de registros que hay en la base de datos, o bien, en el DataGrid, cada uno de estos botones con el label del nombre del cruso que le corresponde

Para esto tengo que leer todos los nombres en los registros del DataGrid, y con un for, ir creando botones con label de cada uno de estos nombres, entonces, cómo leo información del DataGrid????

GRACIAS

Por hIUG

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Abr 2009 11:01 am
Te diría que en vez de asignar directamente el dataprovider al resultado del HTTPService, uses un responder, y en el onResult construyas un ArrayCollection con los datos, luego ya tienes todos los métodos para accederlo (getItemAt, etc) En AS2 eso se hacía directamente sobre el datagrid, pero en AS3 esos métodos ya no existen y se promueve hacerlo en el dataProvider

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Abr 2009 03:34 am

solisarg escribió:

Te diría que en vez de asignar directamente el dataprovider al resultado del HTTPService, uses un responder, y en el onResult construyas un ArrayCollection con los datos, luego ya tienes todos los métodos para accederlo (getItemAt, etc) En AS2 eso se hacía directamente sobre el datagrid, pero en AS3 esos métodos ya no existen y se promueve hacerlo en el dataProvider

Jorge


Jorge:

Hola, gracias, te entiendo :D, otra duda... Cómo construyo y lleno con los valores de la respuesta el ArrayCollection

Por hIUG

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 22 Abr 2009 10:52 am
Creas una array de objetos, en tu caso tendría items así

[{curso:xxxx, nombre:xxxx, categoria:xxxx, descripcion:xxxx}, {.....}}

Dado que lo cargas como XMLtiene que parsearlo y en un loop ir construyendo los items que agregas a un ArrayCollection (imaginalo simplemente somo si fuera un array, usa el método addItem) Si usaras algún método binario, como por ejemplo Remoting, simplemente pasas el array y lo asignas como resultado, algo así

var dp:ArrayCollection = rest_service.lastResult.admin.curso as ArrayCollection

(ojo, no es tu caso, que pasas XML)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Abr 2009 10:15 am

solisarg escribió:

Creas una array de objetos, en tu caso tendría items así

[{curso:xxxx, nombre:xxxx, categoria:xxxx, descripcion:xxxx}, {.....}}

Dado que lo cargas como XMLtiene que parsearlo y en un loop ir construyendo los items que agregas a un ArrayCollection (imaginalo simplemente somo si fuera un array, usa el método addItem) Si usaras algún método binario, como por ejemplo Remoting, simplemente pasas el array y lo asignas como resultado, algo así

var dp:ArrayCollection = rest_service.lastResult.admin.curso as ArrayCollection

(ojo, no es tu caso, que pasas XML)

Jorge


Hola Jorge

Oye, gracias por tomarte la molestia, a ver si te puedo molestar nuevamente.

Mira, intente hacer una prueba para checar si puedo inicialmente hacer los botones con las etiquetas correspondientes, esto fue lo que hice:

Primeramente mi php para la conexión, como es una prueba lo simplifique:

Código :

<?php
//Conectar con MySQL
$MySQLConnection = mysql_connect( "127.0.0.1", "root", "pass" ) or die(mysql_error());
//load the database
mysql_select_db( "acda" );
//Obtener información de la tabla cursos
$Query = "SELECT nom_curso from cursos WHERE cat_curso='Docentes'";
$Result = mysql_query( $Query );
/* Imprimir el XML para Flex */
print "<doce>\n";
while( $Row = mysql_fetch_object( $Result ) )
{
   print "<nom_curso>".$Row->nom_curso."</nom_curso>\n";
}
print "</doce>";
?>


Y en mi mxml puse lo siguiente, igual como prueba, simplificado:

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="rest_service.send()" width="100%" height="100%">

    <mx:HTTPService id="rest_service" result="recibe()" url="http://127.0.0.1/ACDA/ACDA-debug/Prueba9.php" showBusyCursor="true"/>

   <mx:Script>
      <![CDATA[
         import mx.collections.*;
         import mx.controls.*;

         [Bindable]
         private var arr:ArrayCollection = new ArrayCollection;
         
         private function recibe():void
         {
            while(rest_service.lastResult)
            {
               arr.addItem(rest_service.lastResult.doce.nom_curso);
               
               var lin:LinkButton = new LinkButton;
               var laba:Label = new Label;
               
               for(var i:int = 0 ; i<arr.length ; i++)
               {
                  lin.label = String(arr.getItemAt(i));
                  
                  lin.x = 424;
                  lin.y = i*50;
                  lin.name="lin";
                  lin.id = String(arr.getItemAt(i));
                  
                  canv.addChild(lin);
                  
                  laba.text = String(arr.length);
                  laba.y = i*50;
                  canv.addChild(laba);
               }
            }
         }
      ]]>
   </mx:Script>
   <mx:Canvas id="canv" left="0" top="0" bottom="0" right="0"/>
</mx:Application>


Y tengo mi tabla cursos en la base de datos asi:


Entonces, supuesta mente me debería de crear cinco botones que corresponden a docentes, cada uno respectivamente con las etiquetas curso 1d, curso 2d, curso 3d, curso 4d y curso 5d. Y cinco etiquetas con los números del 1 al cinco correspondientemente.

Pero lo que pasa es que me devuelve 343 botones con la etiqueta "curso1d,curso2d,curso3d,curso4d,curso 5d" e igual 343 labels con textos del 1 al 343, algo asi:



No se si tu tengas idea de por que me sucede esto, lamento molestarte, ayuda a un hermano en problemas :lol: y lo malo es que tengo que entregar proyecto en mi escuela :crap:

Gracias.

Por hIUG

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Abr 2009 02:01 pm
Veo que el parseo de datos no tiene mucha coherencia, y aunque pasas XML, en vez de usar EX4 para simplificar la sintaxis te enrollas en una serie de loops anidados. Igual el POST es un poco largo, ¿cual sería el objetivo?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Abr 2009 04:55 pm
El objetivo, seria pedirte que me digas cual es el error en mi logica, si es en el php(que no creo) o si es en mi javascript.

O si no es mucha molestia, me pusieras nuevamente mi código pero ya corregido para que haga lo que yo necesito.

Gracias.

Por hIUG

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Abr 2009 12:21 pm
O si no es mucha molestia, me pusieras nuevamente mi código pero ya corregido para que haga lo que yo necesito.


En cuanto tenga un ratito me pongo a hacértelo, mientras tanto puedes ir meditando esto:

- Tienes que usar sintzxis EX4 en la función recibe
- Tienes que crear objetos (cada propiedad del objeto corresponde al nombre de la columna) que vas metiendo en un ArrayCollection. En ese objeto puedes armar la info como se te cante, ya que reestructuras info base
- Finalmente asignas el ArrayCollection a tu Datagrid
- Si quisieras simplemente crear etiquetas, con parsear correctamente el XML es suficiente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Abr 2009 08:09 pm
Ya jorge, ya quedo, muchísimas gracias, sigo con el proyecto.

Si se me dificulta otra cosa, a ver si te puedo molestar de nuevo.

Gracias!!.

Por hIUG

10 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.