Foros del Web » Programación para mayores de 30 ;) » .NET »

Llenado de combo manualmente

Estas en el tema de Llenado de combo manualmente en el foro de .NET en Foros del Web. Saludos comunidad, me veo en la necesidad de llenar muchos combos de manera manual con valor cada item, por lo que quise crear una función ...
  #1 (permalink)  
Antiguo 16/11/2012, 12:41
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 9 meses
Puntos: 2
Llenado de combo manualmente

Saludos comunidad, me veo en la necesidad de llenar muchos combos de manera manual con valor cada item, por lo que quise crear una función para para no escribir tanto código, pero no la eh podido hacer.

Aquí mi función:

Código vb:
Ver original
  1. Public Shared Function FillComboManual(ByRef cmb As ComponentFactory.Krypton.Toolkit.KryptonComboBox, ByVal valueField As String, ByVal TextField As String)
  2.         Dim dt As DataTable
  3.         dt = New DataTable("Tabla")
  4.         dt.Columns.Add("Codigo")
  5.         dt.Columns.Add("Descripcion")
  6.         Dim dr As DataRow
  7.         dr = dt.NewRow
  8.         dr(0) = valueField
  9.         dr(1) = TextField
  10.         dt.Rows.Add(dr)
  11.         cmb.DataSource = dt
  12.         cmb.ValueMember = "Codigo"
  13.         cmb.DisplayMember = "Descripcion"
  14.     End Function

Como la mando llamar:

Funciones.FillComboManual(cmbSexo, "MASCULINO", "M")

Y si quiero agregarle otro item como esta manera:

Funciones.FillComboManual(cmbSexo, "Masculino", "M")
Funciones.FillComboManual(cmbSexo, "Femenino", "F")

Solo me muestra el ultimo genero que puse en este caso solo me muestra Femenino.

Espero puedan ayudarme para mejorar la función, saludos
  #2 (permalink)  
Antiguo 16/11/2012, 13:20
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: Llenado de combo manualmente

Hola 3ricks0ul, te muestra solo el último porque en tu metodo fillComboManual, con cada llamada que le haces, creas un nuevo datatable seteando el anterior que tenias colocado, quedandote solo el último llamado.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 16/11/2012, 14:04
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años
Puntos: 76
Respuesta: Llenado de combo manualmente

Hola.

Que version del FrameWork utilizas para programar?

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #4 (permalink)  
Antiguo 16/11/2012, 14:24
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años
Puntos: 76
Respuesta: Llenado de combo manualmente

Si estas usando el framework 3.5, acabo de hacer este ejemplo en C# (basado en este link http://www.vbforums.com/showthread.p...ontrol-a-Timer

Creamos esta Clase
Código C#:
Ver original
  1. class ComboBoxItem
  2.         {
  3.             public string Text { get; set; }
  4.             public object Value { get; set; }
  5.         }

Y hacemos esto para carga el combo

Código C#:
Ver original
  1. List<ComboBoxItem> lista = new List<ComboBoxItem>();
  2.                 lista.Add(new ComboBoxItem { Text = "Masculino", Value = "M" });
  3.                 lista.Add(new ComboBoxItem { Text = "Femenino", Value = "F" });
  4.  
  5.                 comboBox1.DataSource = lista;
  6.                 comboBox1.DisplayMember = "Text";
  7.                 comboBox1.ValueMember = "Value";


Ahora eso en tu funcion seria mas o menos asi: (OJO ESTOY MESCALDO LENGUAJES), es solo para ubicar mas o menos lo que debes hacer

Código vb:
Ver original
  1. 'ACA LA PROPIEDAD LISTA,
  2. List<ComboBoxItem> lista = new List<ComboBoxItem>();
  3.  
  4.     Public Shared Function FillComboManual(ByRef cmb As ComponentFactory.Krypton.Toolkit.KryptonComboBox, ByVal valueField As String, ByVal TextField As String)
  5.  
  6.                 lista.Add(new ComboBoxItem { Text = TextField , Value = valueField  });  
  7.                 cmb .DataSource = lista;
  8.                 cmb .DisplayMember = "Text";
  9.                 cmb .ValueMember = "Value";          
  10.  
  11.         End Function

El tener la propiedad lista fuera de la funcion garantiza que no se limpie cada que se llama a la funcion y permanescan los datos.

Si estas usando el framerwork 2, creo que es mucho mas facil, pero esta es solo una idea porque no tengo como probar la funcion en este momento, pero FUNCIONA!!!

Public Shared Function FillComboManual(ByRef cmb As ComponentFactory.Krypton.Toolkit.KryptonComboBox, ByVal valueField As String, ByVal TextField As String)

cmb .Items.Add(TextField ,valueField )


End Function
[/HIGHLIGHT]

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #5 (permalink)  
Antiguo 16/11/2012, 16:07
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Llenado de combo manualmente

Aun así solo me muestra el ultimo item que agregué :(, no entiendo que tengo que hacer aun y de tanto código que ya eh revisado me perdí
  #6 (permalink)  
Antiguo 16/11/2012, 16:48
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años
Puntos: 76
Respuesta: Llenado de combo manualmente

Pero aun no me has dicho que version de framework estas usando?


Y muestra la funcion como la tenes actualmente.

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)

Etiquetas: combo, llenado, manualmente, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:02.