PDA

Ver la Versión Completa : Como encadenar DropDownList


selman
28-06-2005, 19:02:29
Como esncadenar dos DropDownList de manera tal que al seleccionar en el primero solamante se muestren determinados items en el segundo.

Selman.

dec
28-06-2005, 19:27:53
Hola,

No explicas mucho, pero, a ver si esto puede darte una idea. Vamos, al menos, de como yo haría algo que me imagino parecido a lo que precisas...

Inicia una nueva aplicación en Delphi y en el formulario sitúa dos "ComboBox". En el siguiente código se emplean los eventos "FormCreate" del formulario y "OnChange" del primero de los "ComboBox".


const
itemsCombo: array[0..1] of string = ('pares', 'impares');
pares: array[0..4] of integer = (2, 4, 6, 8, 10);
impares: array[0..4] of integer = (1, 3, 5, 7, 9);

// Evento FormCreate
//
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := 0 to High(itemsCombo) do
ComboBox1.Items.Add(itemsCombo[i]);
ComboBox1.ItemIndex := 0;
ComboBox1.OnChange(Self);
end;

// Evento "OnChange" de ComboBox1
//
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i: integer;
begin
ComboBox2.Items.Clear;
case ComboBox1.ItemIndex of
0: begin
for i := 0 to High(pares) do
ComboBox2.Items.Add(IntToStr(pares[i]));
end;
1: begin
for i := 0 to High(impares) do
ComboBox2.Items.Add(IntToStr(impares[i]));
end;
end;
end;


Resumiendo: se llena con los elementos correspondientes el primero de los "ComboBox", se selecciona el primero de estos y se dispara el evento "OnChange".

En dicho evento (del primer "ComboBox") se mira por el índice del elemento seleccionado en el "ComboBox", de tal manera que si este es 0, inicializamos y llenamos el segundo "ComboBox" con números pares. Si el índice es el 1 asignamos al segundo "ComboBox" números impares.

jachguate
28-06-2005, 19:30:56
algo asi:


Procedure TForm1.ComboBox1Click(Sender : TObject);

Begin
comboBox2.Items.Clear;
case ComboBox1.ItemIndex of
0 : // 'uno'
Begin
comboBox2.Items.Add('uno punto uno');
comboBox2.Items.Add('uno punto dos');
comboBox2.Items.Add('uno punto tres');
End;
1 : // dos
Begin
comboBox2.Items.Add('dos punto uno');
comboBox2.Items.Add('dos punto dos');
comboBox2.Items.Add('dos punto tres');
End;
end;


Al menos la idea no creo que cambie para punto net, quizas los eventos.

Hasta luego.

;)

dec
28-06-2005, 19:34:38
Para .NET, David, para .NET... a ver si leemos más despacio... yo no sé entonces si el código de más arriba podrá valer o no... desconozco hasta qué punto Delphi para .NET es "igual" que Delphi para Win32.

selman
28-06-2005, 19:56:01
Ok, gracias por la respuesta, pero como le cargo el Value al item, con el método Add cargo el Text del item pero me falta asignarle su Value.



Selman.

__hector
29-06-2005, 06:01:57
hablas de asp.net, o de una aplicacion win32?

selman
29-06-2005, 19:00:24
De asp.net

Selman

__hector
29-06-2005, 19:47:44
ponle el autopostback del primero a true, y programa el evento SelectedIndexChanged del dropdownlist para capturar el valor que se ha cambiado, y refrescar el otro dropdrownlist.

Igual, nos muestras algo de codigo de lo que quieres hacer ?

selman
29-06-2005, 22:49:41
Estoy trabando con Delphi 2005, desarrollando una aplicación en asp.net. En tiempo de diseño el objeto dropdownlist en su ListItem Collection de cada item tiene tres propiedades

-Selected

-Text

-Value



Con los comentarios de códigos anteriores que me han proporcionado ustedes puedo cargarle en tiempo de ejecución los Text del dropdownlist con el metodo Add, pero me falta como pasarle las otras dos propiedades, Selected y Value

__hector
30-06-2005, 16:22:15
el metodo Add del dropdownlist, acepta como parametro un objeto del tipo ListItem, que a su vez en su constructor acepta los valores de text y value que mencionas. Es mas o menos asi (si la memoria no me falla):

DropDownList1.Items.Add(New ListItem("texto", "valor"));

Si quieres seleccionar un item en especifico:

DropDownList1.SelectedIndex = indice;


Te sirve?

selman
30-06-2005, 19:22:01
Gracias Hector, ya quedó con este codigo.


procedure TWebForm1.AgregaLista (text : string; valor : string);
var
Item : ListItem;
begin
Item := ListItem.Create;
Item.Text := text;
Item.Value := valor;
forma_pago.Items.Add(Item);
Item.Free;
end;

procedure TWebForm1.tipo_cliente_SelectedIndexChanged(sender: System.Object;
e: System.EventArgs);
begin
forma_pago.Items.Clear;
case tipo_cliente.SelectedIndex of
0: begin
AgregaLista ('50 % anticipo y 50 % a la entrega', '1');
AgregaLista ('100 % de anticipo', '2');
AgregaLista ('Tarjeta American Express 50/50', '30');
AgregaLista ('Tarjeta American Express 100 %', '31');
AgregaLista ('Tarjeta American Express 50/50 a 6 meses', '32');
AgregaLista ('Tarjeta American Express 100 % a 6 meses', '33');
AgregaLista ('Tarjeta American Express 50/50 a 9 meses', '34');
AgregaLista ('Tarjeta American Express 100 % a 9 meses', '35');
end;
1,2,3,4,5,6:
begin
AgregaLista ('50 % anticipo y 50 % a la entrega', '1');
end;
end;
end;