CodeCharge Studio
search Register Login  

Visual PHP Web Development

Visually Create Internationalized Web Applications, Web Reports, Calendars, and more.
CodeCharge.com

YesSoftware Forums -> CodeCharge Studio -> Español

 Listbox dependiente de otro Listbox

Print topic Send  topic

Author Message
Andres Rormoser
Posted: 12/09/2005, 3:11 AM

Sacado del ejemplo del CCSExamplePack2 (tiene un par de mejoras la funcion
set_child_listbox)

+ Crear dos listbox (padre e hijo)
+ Agregar en el evento onchange client side del listbox padre
set_child_listbox(this, document.form1.listboxhijo1,array1);
+ Agregar un grid en la seccion de script del HTML con los datos de hijo_id, padre_id,
hijo_descripcion
<!-- BEGIN Grid Grid1 -->var array1 = new Array(
<!-- BEGIN Row -->new Array({hijo_id},{padre_id},'{hijo_descripcion}')<!-- END Row -->
<!-- BEGIN Separator -->,<!-- END Separator -->
);
<!-- END Grid Grid1 -->
+ Agregar la siguiente funcion en la seccion script del HTML
// setea los valores de un listbox hijo basado en el valor de un listbox padre
// usa la variable global talonario que tiene todos los valores posibles del hijo
function set_child_listbox(parentObject,childObject,childArray) {
//guardar valor seleccionado de child listbox
var sub_index = childObject.options[childObject.selectedIndex].value;

//Clear child listbox
for(var i=childObject.length;i>0;i--) {
childObject.options = null;
}
//seteo valores de child listbox basado en el valor seleccionado de parent listbox
childObject.options[0] = new Option("Select Value","");
var sel_index = parentObject.options[parentObject.selectedIndex].value;
if (sel_index == "") {
childObject.disabled = true;
} else {
childObject.disabled = false;
var childIndex = 1;
for (i = 0; i < childArray.length; i++) {
if (childArray[1] == sel_index) {
childObject.options[childIndex] = new
Option(childArray[2], childArray[0]);
childIndex++;
}
}
}
//si sub_index tiene datos entonces busco ese valor en el nuevo child listbox y lo
selecciono
if (sub_index != "")
{
var i;
for (i = 0; i < childObject.length; i++)
{
if (childObject.options.value == sub_index)
{
childObject.selectedIndex = i;
}
}
}
else
{
//Select first option
childObject.selectedIndex = 0;
}
}
+ Agregar las siguientes sentencias en el form_onload client event
//deshabilito listbox talonario (hijo) si es registro nuevo o lo refresco si es un update
if (document.form1.padre1.selectedIndex == "")
{
document.form1.hijo1.disabled = true;
}
else
{
set_child_listbox(document.form1.padre1, document.form1.hijo1,array1);
}



bedollandres

Posts: 48
Posted: 02/13/2006, 12:39 PM

Y que pasa si en el arreglo en {hijo_descripción}, los valores que tengo tienen acentos?? A la hora de llenar el childlistbox aparecen valores unicode... Sólida... así no me sirve la lista dependiente porque la búsqueda no va a funcionar...


_________________
bedollandres
View profile  Send private message
bedollandres

Posts: 48
Posted: 02/14/2006, 2:14 PM

Para que funcione... en las etiquetas del grid que se convierte en array, deben poner "Content" como "HTML" en lugar de "Text" de esta manera se mantiene en el acento...
_________________
bedollandres
View profile  Send private message
Ram Arias
Posted: 02/17/2006, 9:15 PM

Perdone la ignorancia. Es que tengo ese problema de un lisbox dependiente de otro listbox (en mi caso ambos vienen de tablas de la bd) pero aun no he incursionado en las areas de customizacion de codigo a pesar de que soy desarrollador nativo en PHP..

Mis pregvuntas son: El codigo que usted sugiere en que lenguaje esta? php?
Ahi esta amarrando dos tablas de la bd?

De nuevo disulpe la ingnorancia

Ram

lvalverdeb

Posts: 299
Posted: 02/18/2006, 7:28 AM

Ram,

El código descrito es JavaScript (para el lado del cliente) y la solución del lado del servidor es independiente de lenguage ya que utiliza un control tipo grid:
  
<!-- BEGIN Grid Grid1 -->var array1 = new Array(  
<!-- BEGIN Row -->new Array({hijo_id},{padre_id},'{hijo_descripcion}')<!-- END Row -->  
<!-- BEGIN Separator -->,<!-- END Separator -->  
Eliminando los encabezados, sorters, etc te queda un array con los elementos que se manipularán luego con JavaScript para filtrar los contenidos de los listboxes mediante el evento OnChange en los listbox.

Sobre si se puede generar un grid con mas de una tabla la respuesta es sí ya que se pueden unir dos o más tablas con JOINS y demas.

Saludos

Luis
_________________
lvalverdeb
CR, GMT-6
XAMPP/Ubuntu/CCS3.2/4
View profile  Send private message
Reinel
Posted: 02/22/2006, 5:52 PM


Luis,

Gracias por tu ayuda pero no he podido echar a andar el codigo propuesto.
No se si tengo que adaptar el codigo a mis propios nombres de tablas y columnas o si es solo cortar y pegar en el sitio adecuado.

Me toco recurrir a algo mucho mas basico que requiere que los listboxes esten al principio del formulario:

http://support.yessoftware.com/kb_article.asp?&s_cat=&article_id=61

La propuesta basica es crear el listbox padre y el hijo.

En el listbox padre se define un javascript para recargar la pagina pasandole un parametro URL que es usado en el select del datasource del listbox hijo y de esta manera filtrar la lista de acuerdo al valor del parametro recibido. .

Tambien hay una funcion javascript en el form load para remover el parametro URL y evitar asi que este se vaya acumulando cuando la forma se recarga en multiples ocasiones.

Mi problema con este metodo es que una vez la pantalla se refresca, desaparece el valor que yo habia seleccionado en el listbox padre regresandolo al estado iniciial donde pide "Seleccionar Valor".

Alguna idea?

Gracias desde una de las ciudades mas bonitas de Colombia: Pereira

Reinel
lvalverdeb

Posts: 299
Posted: 02/23/2006, 7:47 AM

Reinel,

Por lo que entiendo quieres implementar las listas dependientes en un formulario de ingreso de datos (Record Form), cierto? La solución propuesta por Andrés es muy eficiente mas requiere saber algo de javascript.

Si usas PHP, te puedo sugerir una solución que fué diseñada tiempo atrás y que recientemente fué ajustada por Walter Kempees para CCS 3. La puedes obtener en http://www.consultair.nl/newsite/download/DepListBox_Action_v3.zip

Dentro del zip vienen las instrucciones (en ingles) y se activa mediante Acciones ejecutadas tanto en el cliente como el servidor. Francamente, esta solución es la mejor que he encontrado ya que requiere ninguna o poca programación. Pruebalo y nos cuentas.

Saludos

Luis

_________________
lvalverdeb
CR, GMT-6
XAMPP/Ubuntu/CCS3.2/4
View profile  Send private message
aanderson

Posts: 5
Posted: 02/26/2006, 8:59 PM

Disculpen como podria manejar listbox dependientes dentro de grias editables ?
View profile  Send private message
Reinel
Posted: 02/27/2006, 8:03 PM

Luis,

Gracias por tu consejo. Ojala siempre en los foros se encontraran respuestas tan ceñidas a lo que necesitas: Dos listbox relacionados dentro de un record form. Funciona perfecto con la solucion actualizada de "sixto"

No requiere ninguna programacion. Son unas "acciones" (archivos XML) que uno copia al sitio adecuado dentro del arbol de instalacion del codecharge.

Seguí los pasos y funciona perfecto. No recarga la forma y por tanto no borra los campos ya digitados, es un javascript que basicamente arma dos array con el contenido de las dos tablas involucradas y los maneja localmente.

Para los perfeccionistas: Hay que editar Dependant ListBoxes.xml del lado del server y reemplazar el "Please select" por ·"Seleccionar Valor" para ser consistentes con la interface en español.

gracias de nuevo amigo Luis
lvalverdeb

Posts: 299
Posted: 03/01/2006, 7:18 AM

Reinel. Que bien que te haya funcionado.

Anderson. La solucion para grillas editables es parecida al metodo sugerido por Andres y actualizar cada list box en el metodo beforeshowrow.

La solucion completa es detallada en el siguiente post http://forums.codecharge.com/posts.php?post_id=61155

Luis
_________________
lvalverdeb
CR, GMT-6
XAMPP/Ubuntu/CCS3.2/4
View profile  Send private message
aanderson

Posts: 5
Posted: 03/04/2006, 2:42 PM

Gracias Luis, me estaba volviendo loco hasta que me mandeste esta orientacion. todo me funciono de maravillas desde entonces.

gracias !!!!
View profile  Send private message
aanderson

Posts: 5
Posted: 03/04/2006, 4:11 PM

He probado la soluccion con tablas que sus campos id son numericos, pero cuando dichos campos son alfanumericos me da el siguiente error

chilObject.lenght no es nulo o no es un objecto

a que se debera esto ???
View profile  Send private message
lvalverdeb

Posts: 299
Posted: 03/05/2006, 12:55 AM

Es dificil decir porque el error ocurre pero puedes tratar de prevenir el error en JavaScript asegurandote de que la funcion se ejecute solo si childObject es un objeto. Por ejemplo:

  
if (typeof(childObject) == "object") {  
  
  
}  

Si quieres puedes publicar aqui el codigo que usas y ver si hay errores de sintaxis o algo asi.

Luis
_________________
lvalverdeb
CR, GMT-6
XAMPP/Ubuntu/CCS3.2/4
View profile  Send private message
manuel
Posted: 03/18/2006, 12:08 PM

Alguien tiene un ejemplo que involucre 3 listbox's????
josueM
Posted: 03/24/2006, 8:07 PM

hola... no soy programador, me dedico al diseño grafico y "programo un poco", alguien podria facilitarme un ejemplo, si es posible con archivo incluido, de como hacer esto con 3 listas........ de preferencia en español
ahurtado
Posted: 03/31/2006, 3:52 PM

la solucion que recomendo lvalverdeb me parece mas al estilo CCS de programar lo menos posible, pero me ocurre igual q' josuem no soy programador y mi ingles deja mucho q' dedesear :-( alguien modifico la opcion propuesta por lvalverdeb para 3 listas, o tiene las intrucciones de codecharge en español para hacer esto

de antemano gracias
The Answer
Posted: 05/02/2006, 8:03 AM

En PHP, necesito dos listbox dependientes que interactuen con una base de datos osea en mi primer listbox cargo los estados de un pais y dependiendo elija un estado, se cargen sus respectivas provincias en el otro listbox, haciendo el uso de una base de datos
help me
aanderson

Posts: 5
Posted: 05/09/2006, 5:10 PM

Chicos las solucciones que hemos dialogado es este foro con respecto a los listbox me an funcionado de maravillas. Solo que tengo un problema cuando el listbox hijo es un string con caracteres especiales como í,ó,ú me aparece ÷ y cosas por el estilo. agradezco desde ahora su ayuda. saludos
View profile  Send private message
carlitos
Posted: 06/15/2006, 10:45 PM

hola soy nuevo en la programacion y tengo un problema con los list box, como puedo extraer un valor de un listbox a una variable en programacion ASP
markito

Posts: 24
Posted: 10/04/2006, 7:31 AM

Alguien ha traducido el manual al castellano... o podria traducir el ejemplo de 3 listbox ... mi comprencion del ingles es bastante limitada :-<
View profile  Send private message

Add new topic Subscribe to topic   


These are Community Forums for users to exchange information.
If you would like to obtain technical product help please visit http://support.yessoftware.com.

MS Access to Web

Convert MS Access to Web.
Join thousands of Web developers who build Web applications with minimal coding.

CodeCharge.com

Home   |    Search   |    Members   |    Register   |    Login


Powered by UltraApps Forum created with CodeCharge Studio
Copyright © 2003-2004 by UltraApps.com  and YesSoftware, Inc.