ExtJs y su integración con CodeIgniter
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.
[color=#BF0000][b]Controlador:[/b][/color]
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');
}
[color=#BF0000][b]Modelo[/b][/color]
function lista_pendiente(){
$this->db->select('Id_Evaluacion');
$this->db->from('evaluaciones');
$this->db->limit(10);
$lBoards = $this->db->get();
return $lBoards;
}
[color=#BF0000][b]y en el formulario grid:[/b][/color]
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.
Aunque no domino CodeIgniter te invito a revisar el [url=http://www.sencha.com/learn/Main_Page]centro de aprendizaje[/url] de la pagina oficial de ExtJs (ahora <!-- m -->http://www.sencha.com<!-- m -->, en ExtJs Commuity, Step-by-Step Tutorials)
<!-- s:mrgreen: --><!-- s:mrgreen: -->
especialmente el punto 1.6 Grids:
<!-- m -->http://www.sencha.com/learn/Tutorials#Grids<!-- m -->
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
[url=http://mlaynessanchez.blogspot.com]@Mlaynes[/url]
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
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'
]
});
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.