Respuesta: Problema con Extjs no funcionan Selects dependientes sacando datos de la B Luego de varios dias buscando como solventar esto lo puede realizar con el siguiente codigo, espero le sirva a alguien:
Código:
var datos_select = new Ext.data.Store({
autoLoad: true,
proxy: new Ext.data.HttpProxy({
url:'../JSON/selects_multiples_car.php',
method: 'POST',
}),
reader: new Ext.data.JsonReader({
root: 'data'
}, [
{name: 'valor'},
{name: 'etiqueta'}
])
});
var codigo_pais_fld = new Ext.form.ComboBox({
mode: 'local',
//disabled:true,
store: datos_select,
displayField : 'etiqueta',
valueField : 'valor',
forceSelection:true,
minChars: '1',
fieldLabel: 'País',
labelStyle: 'font-weight:bold;',
typeAhead: true,
hiddenName: 'codigo_pais_fld',
triggerAction: 'all',
emptyText:'Seleccione País de la Obra...',
selectOnFocus:true,
forceSelection :false,
id:'codpais',
name:'codpais',
editable : true,
autoLoad:true,
width:450,
allowBlank:false,
selectOnFocus:true
});
codigo_pais_fld.on('select',function(cmb,record,index){
codigo_provincia_fld.enable();
//codigo_provincia_fld.clearValue();
datos_select.load({
params:{
id1:record.get('valor')
}
});
},this);
var codigo_provincia_fld = new Ext.form.ComboBox({
mode: 'local',
store: datos_select,
disabled:true,
displayField : 'etiqueta',
valueField : 'valor',
fieldLabel: 'Provincia',
typeAhead: true,
hiddenName: 'codigo_provincia_fld',
forceSelection:true,
minChars: '1',
triggerAction: 'all',
emptyText:'Seleccione Provincia...',
selectOnFocus:true,
forceSelection :false,
labelStyle: 'font-weight:bold;',
id:'codprovincia',
name:'codprovincia',
editable : true,
autoLoad:true,
width:450,
allowBlank:false,
selectOnFocus:true
});
codigo_provincia_fld.on('select',function(cmb,record,index){
codigo_municipios_fld.enable();
//codigo_municipios_fld.clearValue();
datos_select.load({
params:{
id2:record.get('valor')
}
});
},this);
var codigo_municipios_fld = new Ext.form.ComboBox({
mode: 'local',
store: datos_select,
displayField : 'etiqueta',
valueField : 'valor',
fieldLabel: 'Municipio',
disabled: 'true',
forceSelection:true,
minChars: '1',
typeAhead: true,
hiddenName: 'codigo_municipios_fld',
triggerAction: 'all',
labelStyle: 'font-weight:bold;',
emptyText:'Seleccione Municipio...',
selectOnFocus:true,
forceSelection :false,
id:'codmunicipio',
name:'codmunicipio',
editable : true,
autoLoad:true,
width:450,
allowBlank:false,
selectOnFocus:true
});
codigo_municipios_fld.on('select',function(cmb,record,index){
codigo_parroquias_fld.enable();
//codigo_parroquias_fld.clearValue();
datos_select.load({
params:{
id3:record.get('valor'),
}
});
},this);
var codigo_parroquias_fld = new Ext.form.ComboBox({
mode: 'local',
store: datos_select,
displayField : 'etiqueta',
valueField : 'valor',
fieldLabel: 'Parroquia',
forceSelection:true,
minChars: '1',
typeAhead: true,
hiddenName: 'codigo_parroquias_fld',
labelStyle: 'font-weight:bold;',
triggerAction: 'all',
emptyText:'Seleccione Parroquia...',
selectOnFocus:true,
forceSelection :false,
disabled: 'true',
id:'codparroquia',
name:'codparroquia',
editable : true,
autoLoad:true,
width:450,
allowBlank:false,
selectOnFocus:true
});
Y este es el codigo en php Código PHP: <?php
require_once('../Connections/obras.php');
require_once('../funciones/funciones.php');
mysql_select_db($database_obras, $obras);
$query_busqueda = "SELECT DISTINCT * FROM de_paises ORDER BY pais ASC";
$busqueda = mysql_query($query_busqueda, $obras) or die(mysql_error());
$row_busqueda = mysql_fetch_assoc($busqueda);
$totalRows_busqueda = mysql_num_rows($busqueda);
$data = array();
if((empty($_POST['id1'])) and (empty($_POST['id2'])) and (empty($_POST['id3'])) and (empty($_POST['id4'])) and (empty($_POST['id5']))) {
$id = -1;
do { //step 3
array_push($data,array(
"valor" => $row_busqueda['codigopais'],
"etiqueta" => $row_busqueda['pais']
));
} while($row_busqueda = mysql_fetch_assoc($busqueda));
}
if(!empty($_POST['id1'])) {
mysql_select_db($database_obras, $obras);
$query_busqueda = "SELECT DISTINCT * FROM `de_provincias` WHERE `codigopais` LIKE '".$_POST['id1']."'";
$busqueda = mysql_query($query_busqueda, $obras) or die(mysql_error());
$row_busqueda = mysql_fetch_assoc($busqueda);
$totalRows_busqueda = mysql_num_rows($busqueda);
do { //step 3
array_push($data,array(
"valor" => $row_busqueda['codigoprovincia'],
"etiqueta" => $row_busqueda['provincia']
));
} while($row_busqueda = mysql_fetch_assoc($busqueda));
}
if(!empty($_POST['id2'])) {
mysql_select_db($database_obras, $obras);
$query_busqueda = "SELECT DISTINCT * FROM `de_municipios`WHERE `codigoprovincia` LIKE '".$_POST['id2']."'";
$busqueda = mysql_query($query_busqueda, $obras) or die(mysql_error());
$row_busqueda = mysql_fetch_assoc($busqueda);
$totalRows_busqueda = mysql_num_rows($busqueda);
do { //step 3
array_push($data,array(
"valor" => $row_busqueda['codigomunicipio'],
"etiqueta" => $row_busqueda['municipio']
));
} while($row_busqueda = mysql_fetch_assoc($busqueda));
}
if(!empty($_POST['id3'])) {
mysql_select_db($database_obras, $obras);
$query_busqueda = "SELECT * FROM `de_parroquias` WHERE `codigomunicipio` LIKE '".$_POST['id3']."'";
$busqueda = mysql_query($query_busqueda, $obras) or die(mysql_error());
$row_busqueda = mysql_fetch_assoc($busqueda);
$totalRows_busqueda = mysql_num_rows($busqueda);
do { //step 3
array_push($data,array(
"valor" => $row_busqueda['codigoparroquia'],
"etiqueta" => $row_busqueda['parroquia']
));
} while($row_busqueda = mysql_fetch_assoc($busqueda));
}
echo json_encode( //step 4
array(
"success" => true,
"data" => $data
));
mysql_free_result($busqueda);
?> |