Cita:
Iniciado por pateketrueke en todo caso no crees que la solución esta en poner los saltos de linea y espacios desde tu función??
Tienes toda la razón, hice los saltos de linea dentro de la función php y listo (es demasiado extraño y engorroso a veces mezclar javascript con php)
Y aqui la solución, una función php para generar grids con extjs
:apla uso:
Código PHP:
function grid_scroll_bar($titulo,$consulta,$div,$campos,$campos_hint,$alto,$ancho,$hostname_obras,$database_obras,$username_obras,$password_obras,$columnas) {
$obras = mysql_pconnect($hostname_obras, $username_obras, $password_obras) or trigger_error(mysql_error(),E_USER_ERROR); //Se usan rutas persistentes
mysql_select_db($database_obras, $obras);
$query_gridsql = sprintf($consulta);
$gridsql = mysql_query($query_gridsql, $obras) or die(mysql_error());
$row_gridsql = mysql_fetch_assoc($gridsql);
$totalRows_gridsql = mysql_num_rows($gridsql);
$campo = explode(",",$campos);
$total_campos = count($campo);
$ancho_columnas = $ancho/$total_campos;
$grid = "<script type='text/javascript'>
";
$grid .= "Ext.onReady(function(){
";
$grid .= "var myData = [
";
$l = 0;
do {
$arreglo_indices = array();
$l++;
$grid .= "[";
for ($i = 0; $i < $total_campos; $i++) {
$id_campo = $campo[$i];
$arreglo_indices[] = "'".$row_gridsql[$id_campo]."'";
}
if (count($arreglo_indices) > 0) {
$arreglo1 = implode(",",$arreglo_indices);
$grid .= $arreglo1;
}
if ($totalRows_gridsql != $l) {
$grid .= "],";
} else {
$grid .= "]";
}
} while($row_gridsql = mysql_fetch_assoc($gridsql));
$grid .= "];";
// create the data store
$grid .= "var store = new Ext.data.Store({
";
$grid .= "proxy: new Ext.ux.data.PagingMemoryProxy(myData),
";
$grid .= "remoteSort:true,
";
$grid .= "sortInfo: {field:'".$campo[0]."', direction:'DESC'},
";
$grid .= "reader: new Ext.data.ArrayReader({
";
$grid .= "fields: [
";
//Empezar ciclo
for ($j = 0; $j < $total_campos; $j++) {
$arreglo_nombres[] = "{name:'".$campo[$j]."'}
";
}
$grid .= implode(",",$arreglo_nombres);
//Finalizar ciclo
$grid .= "]
";
$grid .= "})
";
$grid .= "})
";
// create the Grid
$grid .= "var grid = new Ext.grid.GridPanel({
";
$grid .= "store: store,
";
$grid .= " columns: [
";
//Empezar el ciclo
for ($k = 1; $k < $total_campos; $k++) {
$arreglo_campos[] = "{header: \"".$campo[$k]."\", width: ".$ancho_columnas.", sortable: true, dataIndex: '".$campo[$k]."'}
";
}
//Finalizar ciclo
$grid .= "{id: \"".$campo[0]."\", width: ".$ancho_columnas.", sortable: true, dataIndex: '".$campo[0]."'},
".implode(",",$arreglo_campos);
$grid .= " ],
";
$grid .= " stripeRows: true,
";
$grid .= " autoExpandColumn: '".$campo[0]."',
";
$grid .= " height:".$alto.",
";
$grid .= " width:".$ancho.",
";
$grid .= " frame:true,
";
$grid .= " title:'".$titulo."',
";
$grid .= " plugins: new Ext.ux.PanelResizer({
";
$grid .= " minHeight: 100
";
$grid .= " }),
";
$grid .= "bbar: new Ext.PagingToolbar({
";
$grid .= "pageSize: 10,
";
$grid .= "store: store,
";
$grid .= "displayInfo: true,
";
$grid .= "plugins: new Ext.ux.ProgressBarPager()
";
$grid .= " })
";
$grid .= "});
";
$grid .= "grid.render('".$div."');
";
$grid .= "store.load({params:{start:0, limit:".$columnas."}});
";
$grid .= "});
";
$grid .= "</script>";
return $grid;
}