Templates y Temas para ExtJS y Sencha Touch Bleext!
Bleextop! un desktop OpenSource para Ext4 y CodeIgniter http://bit.ly/pUwLJO
ExtJs y su integración con CodeIgniter
  • Vote Up0Vote Down rodolfolayrodolfolay June 2010
    Posts: 2
    Estoy iniciando un proyecto y utilizo ExtJs y CodeIgniter y el problema es la presentación de los datos ya sea en combos o grid, este es mi problema en el grid. Envio código de MVC.

    Tengo el siguiente modelo MVC con codeigniter.

    Controlador:

    function mostrar_pendientes(){

    $this->load->model('pruebamodel');
    $Boards = $this->pruebamodel->lista_pendiente();
    foreach($Boards->result() as $row)
    {
    $item = Array("Id_Evaluacion" => $row->Id_Evaluacion);
    $itemList[] = $item;
    }
    $rows = $Boards->num_rows();
    $data = json_encode($itemList);
    echo '({"total":"' . $rows . '","results":' . $data . '})';


    // $this->load->model('pruebamodel');
    // $pend = $this->pruebamodel->lista_pendiente();
    $this->load->view('auditoria');


    }

    Modelo

    function lista_pendiente(){
    $this->db->select('Id_Evaluacion');
    $this->db->from('evaluaciones');
    $this->db->limit(10);
    $lBoards = $this->db->get();
    return $lBoards;
    }

    y en el formulario grid:

    var dataRecord = new Ext.data.Record.create([
    {name: 'Id_Evaluacion'}
    ]);
    var dataReader = new Ext.data.JsonReader({
    root: 'data'
    },
    dataRecord
    );
    var dataProxy = new Ext.data.HttpProxy({
    url: BASE_URL + 'pruebacont/mostrar_pendientes',
    method: 'POST'
    });

    var dataStore = new Ext.data.Store({
    autoLoad: true,
    proxy: dataProxy,
    reader: dataReader
    });

    var colModel = new Ext.grid.ColumnModel([
    {header: "Id_Evaluacion", sortable: true, dataIndex: 'Id_Evaluacion'},
    ]);

    dataStore.load();

    var gridCACExt = new Ext.grid.GridPanel({
    store: dataStore, colModel:colModel, autoExpandColumn: 'company', title: 'CA. C.Externos',
    columnWidth:.33, height: 315, clicksToEdit:2,
    listeners : {
    rowdblclick:function(grid,rowIndex,e){
    onRowClick(grid,rowIndex,e);
    }
    }
    });

    y la respuesta del json es

    ({"total":"10","results":[{"Id_Evaluacion":"CA-CExt-2010-06-01"},{"Id_Evaluacion":"CA-CExt-2010-06-02"},{"Id_Evaluacion":"CA-CExt-2010-06-03"},{"Id_Evaluacion":"CA-CExt-2010-06-04"},{"Id_Evaluacion":"CA-CExt-2010-06-05"},{"Id_Evaluacion":"CA-Emgr-2010-06-01"},{"Id_Evaluacion":"CA-Emgr-2010-06-02"},{"Id_Evaluacion":"CA-Emgr-2010-06-03"},{"Id_Evaluacion":"CA-Emgr-2010-06-04"},{"Id_Evaluacion":"CA-Emgr-2010-06-05"}]})

    Pero no se presentan los datos en el grid... Gracias.
  • 3 Answers sorted by
  • Aunque no domino CodeIgniter te invito a revisar el centro de aprendizaje de la pagina oficial de ExtJs (ahora http://www.sencha.com, en ExtJs Commuity, Step-by-Step Tutorials)
    :mrgreen:

    especialmente el punto 1.6 Grids:
    http://www.sencha.com/learn/Tutorials#Grids

    De ellos el primero: Grids, PHP and SQL for newbies, es realmente explicado paso x paso (y funciona bien... solo le detecte un error al grabar el partido politico empleado el combox.. que debes corregir (pero revisa en tabla de MySQL y veras que si esta grabando).... pero este utiliza como back-end PHP y MySql

    respecto a tu tema revisa: Building a Grid with CodeIgniter, y nos comentas al respecto.

    Los otros son tutoriales mas genericos pero tambien muy interesantes...(aunque aun no reviso todos al detalle)

    Saludos
    @Mlaynes
  • Vote Up0Vote Down CrysfelCrysfel July 2010
    Posts: 897
    Tu problema radica en el reader, debes definir correctamente tu propiedad "root", actualmente tienes algo así:


    root: 'data'


    y en tu json que muestras no existe esa propiedad, tu le has llamado "results", correige eso y deberías funcionar.

    Saludos
  • Vote Up0Vote Down wonderwonder December 2010
    Posts: 17
    Exactamente eso es lo que le sucede. Debe definir su propiedad Root como "result" o cambiarlo en el controlador y ponerlo a "data". Algo así.



    app.store.grid_elementos_config = new Ext.data.JsonStore({
    url: 'index.php/elemento_configuracion/listar_elemento_configuracion_estado_dado_id_categoria',
    root: 'data',
    totalProperty: 'total',
    //baseParams: {start: 0, limit: 5},
    fields: [
    'id_elemento_configuracion',
    'id_categoria',
    'nombre_categoria',
    'nombre_elemento_configuracion',
    'nombre_estado',
    'id_estado',
    'id_elemento_configuracion_estado'
    ]
    });

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook Sign In with Twitter

Sign In Apply for Membership

In this Discussion

Poll

No poll attached to this discussion.