estoy empezando con extjs, voy poco a poco me va costando, pero bueno...; tengo una duda puede que alguien lo tenga resuelto por eso lo consulto. Creo un gridPanel que relleno con un GeoJson que he generado a partir de una consulta en PHP. Ese grid lo quiero cargar en la pagina principal del proyecto, para lo que primeramente para que no me lo cargue con los datos del fichero generado comento la propiedad autoLoad. Una vez cargado vacio en la pagina principal, mediante un form hago una seleccion de un elemento y vuelvo a escribir el GeoJson, ahora si lo quiero cargar pero no quiero que se recarge toda la pagina, quiero que solo se rellene el grid y se cargue en el mapa. como hacerlo?. por otro lado, si en el submit ejecuto la consulta y abro una ventana con un mainPanel con el mapPanel y el gridPanel me rellena el grid con datos, en este caso ceros pq la informacion que obtengo esta vacia, si lo hago en el viewPort el grid no me lo rellena, si interactuan las filas con el vecLayer pero en el grid no aparecen los ceros como en la otra opcion, ¿a que puede ser debido?.
Grid:
- Código: Seleccionar todo
store = new GeoExt.data.FeatureStore({
layer: vecLayer,
fields: [
{name: 'name', type: 'string'},
{name: 'elevation', type: 'float'}
],
proxy: new GeoExt.data.ProtocolProxy({
protocol: new OpenLayers.Protocol.HTTP({
url: "data/especie.json",
format: new OpenLayers.Format.GeoJSON()
})
}),
// autoLoad: true
});
gridPanel = new Ext.grid.GridPanel({
title: "Información de Capturas",
region: "south",
border: true,
collapsible: true,
collapsed:true,
collapseMode: "mini",
store: store,
height:400,
boxMinHeight: 450,
autoScroll: true,
split:true,
columns: [{
header: "Hora Lance",
width: 180,
sortable: true,
dataIndex: "shooting_latitude"
}, {
header: "Recogida Lance",
width: 120,
sortable: true,
dataIndex: "shooting_longitude"
}],
stripeRows: true,
sm: new GeoExt.grid.FeatureSelectionModel()
});
consulta PHP que genera el GeoJson:
- Código: Seleccionar todo
<?php
/*conexion a la base de datos */
$conexion = pg_connect("host=*** port=*** dbname=*** user=postgres password=***");
if (!$conexion){
echo "<center>La conexión con la base de datos no se ha realizado.</center>";
exit;
}
$query = 'select id, id_haul, id_catch, ST_AsGeoJSON(the_geom, 4) AS geojson from "Haul_geo_new" natural inner join catch where a_code = \'EJB\' and shooting_time between \'-infinity\' and \'now\'';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
?>
<?php
$geojson = array(
'type' => 'FeatureCollection',
'features' => array()
);
/*while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {*/
$i = 0;
while ($line = pg_fetch_assoc($result)) {
/*echo $line["geojson"]."<BR>";*/
$feature = array(
'geometry' => json_decode($line['geojson'], true),
/*'properties' => $data[]=$line;*/
'id' => $i++
);
array_push($geojson['features'], $feature);
}
$especie = json_encode($geojson);
$archivo = fopen("/var/www/html/data/especie.json", "w");
fwrite($archivo, $especie);
fclose($archivo);
?>
La idea es seleccionar en un form en la pagina principal y al hacer el submit ejecutar la consulta, y consultar los datos en el grid y asi para cada elemento del form.
un saludo.

