alvaro-prieto
4/28/2017 - 2:22 PM

insertaLista Combo combobox select option PHP JS JavaScript. Acceder a valor de control

insertaLista Combo combobox select option PHP JS JavaScript. Acceder a valor de control

/*
Control para mostrar un combobox, se suelen encerrar en un div para acceder a sus 
eventos desde JS mediante una clase:

*/

$s .= "<div class='filtro_usuarios'>". $SoporteColaboradores->insertaLista(
  array( 
		"campos"=> 'nombre' , 
		"campo_key" => 'id' , 
		"todos" => true,
		"texto_todos"=> "jamon",
		//"idseleccionado" =>5,  //supongo que por si quieres que un valor venga por defecto
		"identifica_con_key"=> true , 
		"rotulo"=> 'Titulo del combo'));
	$s.="</div>";
	
	
	//________________________________________________________
	// Y desde JavaScript:
	
	
	
	"inicia":function()
	{
		var quontrol = this.quontrol;
		quontrol.on("seleccionado", ".filtro_usuarios ",function(){
			quontrol.funcionEjemplo();
		});
		

	},

	"funcionEjemplo": function(e, row){
	
		var quontrol = this.quontrol;
		//si solo nos interesa su valor, podemos acceder a traves de row.valor
		var valor = row.valor;
		
		//si tenemos varios combos y queremos acceder al valor de todos ellos, o al 
		//de otro que no ha gatillado el evento:
		var valor = quontrol.find(".elComboOControlQueSea").accion("valor"); //ojo! es un objeto
		
		
	}
	
	
	
	/* Otro ejemplo con datasource custom */
	$opciones = [
	"1" => "Mostrar equipos",
	"2" => "Mostrar IPs libres",
	"3" => "Mostrar ambas"	
];

$s .= $this->insertaLista(array( 
	"_escritura" => true,
	"lista" => $opciones,
	"campo_key" => 'id' , 
	"valor" => "1", //valor seleccionado por defecto. Cuando todos== false, entonces hay que asignar un valor obligatoriamente
	"todos" => false,
	"identifica_con_key"=> true, 
	"rotulo"=> 'Opciones del PDF'));

	
	
	
/*
Si queremos hacer un listado que tome el campo id y el rotulo de campos 
específicos, podemos establecerlo pasandole un array con el campo "rotulo" por ejemplo.

La cuestión es hacer la query de forma que se lleve bien con el plugin lista:

*/

$Centro = new Centro();
$Centro->orden("centro");
//le cambiamos el nombre "ID" porque el lista si detecta un campo ID lo indexa por ID
$parametros["listadoCentros"] = $Centro->lista("id as idcentro, centro as rotulo");  

//y luego en javascript:

[...]

"parametros":{
				"todos": false,
				"campo_key": 'idcentro' , 
				"campos": ["centro"],
				"texto_todos": "Selecciona un centro",
				"lista": centros
			}