none
Agregar una opcion "Todos" a un ComboBox

    Pregunta

  • Buenos dias, tengo una consulta sobre un ComboBox.

    Tengo un Form con un ComboBox que, segun el valor que tenga, muestra ciertos registros en un DataGridView.

    Este ComboBox, se carga mediante un Stored Procedure.

    Mi pregunta es ¿Como puedo hacer para agregar a los valores del ComboBox una opcion "Todos", "Vacio", "Nada", NULL o algo asi?

    Si bien, yo puedo poner que al llenar el ComboBox el item seleccionado sea Nothing, una vez que elijo uno de la lista, ya no puedo volver a poner  un "Nada".

    Espero puedan ayudarme, gracias!
    jueves, 03 de septiembre de 2009 14:47

Respuestas

  • Hola, Ignacio:

    Si el control ComboBox se encuentra enlazado a un origen de datos, no vas a poder modificar su colección Items.

    Si se encuentra enlazado a un objeto DataTable, antes de especificar su propiedad DataSource, puedes añadir las filas que desees a dicho objeto DataTable, tal y como muestra el siguiente ejemplo:

                ' Añadimos una nueva fila al objeto DataTable
                Dim row As DataRow = dt.NewRow
    
                ' Establecemos el valor del campo Nombre
                row("Campo_DisplayMember") = "Todos"
    
                ' Establecemos el valor de otro Campo
                row("Campo_ValueMember") = 0
    
                ' Insertamos la fila en la primera posición
                dt.Rows.InsertAt(row, 0)
    
                ComboBox1.DataSource = dt
                ComboBox1.DisplayMember = "Campo_DisplayMember"
                ComboBox1.ValueMember = "Campo_ValueMember"
    

    Un saludo

    Enrique Martínez [MS MVP - VB]
    viernes, 04 de septiembre de 2009 8:43

Todas las respuestas

  • Puedes añadir un item más al combo cuando acabes de llenarlo:

    combobox1.Items.AddRange(...); //Aquí lo llenas por el método que sea
    combobox1.Items.Insert(0, "nada");
    jueves, 03 de septiembre de 2009 19:53
  • Hola! :-)

    Podrias utilizar un DataView!

    Nota: Suponiendo que estas filtrando mediante los nombres de los productos, es decir en un ComboBox estan los nombres de los productos, y de acuerdo a ello vas filtrando al DataGridView, entonces harias lo siguiente!

    Dim dvProductos As DataView
    Private Sub BtnFiltrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFiltrar.Click
        Dim vCadenaFiltro As String
        If cboLetraInicial.Text = "<ALL>" Then
            vCadenaFiltro = "ProductName like '%'"
        Else
             Aqui hiria las otras cosas que haces...
        End If
        'Aplicar el Filtro
        dvProductos.RowFilter = vCadenaFiltro
        DataGridView1.DataSource = dvProductos
    End Sub

    Con esto estarias filtrando nuevamente todos los registros de tu tabla Products en tu control DataGridView

    __________________________________________________________________________________________
     Si esta solucion te sirvio marcala como correcta! :-)

    viernes, 04 de septiembre de 2009 4:58
  • Hola, Ignacio:

    Si el control ComboBox se encuentra enlazado a un origen de datos, no vas a poder modificar su colección Items.

    Si se encuentra enlazado a un objeto DataTable, antes de especificar su propiedad DataSource, puedes añadir las filas que desees a dicho objeto DataTable, tal y como muestra el siguiente ejemplo:

                ' Añadimos una nueva fila al objeto DataTable
                Dim row As DataRow = dt.NewRow
    
                ' Establecemos el valor del campo Nombre
                row("Campo_DisplayMember") = "Todos"
    
                ' Establecemos el valor de otro Campo
                row("Campo_ValueMember") = 0
    
                ' Insertamos la fila en la primera posición
                dt.Rows.InsertAt(row, 0)
    
                ComboBox1.DataSource = dt
                ComboBox1.DisplayMember = "Campo_DisplayMember"
                ComboBox1.ValueMember = "Campo_ValueMember"
    

    Un saludo

    Enrique Martínez [MS MVP - VB]
    viernes, 04 de septiembre de 2009 8:43