none
Busqueda En Datagridview, Mandar Solo Registro Seleccionado RRS feed

  • Pregunta

  • Hola buenos dias tengo una  consulta en un procediemiento almacenado y la mando llamar en un data gridview, hice un metodo para buscar en ese datagridview y si lo hace, pero el problema es que solo selecciona el registro entre todos los demas, osea aparecen todos los registros y el que busque aparece seleccionado con el cursor. Lo que quiero es que aparezca solo el registro buscado en el datagridview, les dejo el codigo del metodo, ademas utilice un blindingsource
    Function Buscar( _
            ByVal Columna As String, _
            ByVal texto As String, _
            ByVal BindingSource As BindingSource) As Integer
    
            Try
                ' si está vacio salir y no retornar nada  
                If BindingSource1.DataSource Is Nothing Then
                    Return -1
                End If
    
                ' Ejecutar el método Find pasándole los datos  
                Dim fila As Integer = BindingSource.Find(Columna.Trim, texto)
    
                ' Mover el cursor a la fila obtenida  
                BindingSource.Position = fila
    
                ' retornar el valor  
                Return fila
    
                ' errores  
            Catch ex As Exception
                MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
            End Try
            ' no retornar nada  
            Return -1
    
        End Function


    Cristian Murillo

    viernes, 2 de febrero de 2018 14:54

Respuestas

  • "JuanAurich23" escribió:

    > hice un metodo para buscar en ese datagridview y si lo hace, pero el problema
    > es que solo selecciona el registro entre todos los demas, osea aparecen todos
    > los registros y el que busque aparece seleccionado con el cursor. Lo que quiero
    > es que aparezca solo el registro buscado en el datagridview, les dejo el codigo
    > del metodo, ademas utilice un blindingsource

    En lugar de Buscar (Find), lo que tienes que hacer es Filtrar (Filter) las filas del control BindingSource para que el control DataGridView al que se encuentra enlazado muestre solamente las filas que cumplan con el criterio de filtrado especificado.

    Es decir, en lugar de hacer uso del método Find del control BindingSource, tienes que hacer uso de su propiedad Filter:

        ' Mostramos la fila donde el valor de la columna IdCliente tenga el valor ZCUDE
         BindingSource1.Filter = String.Format("{0}='{1}'", "IdCliente", "ZCUDE")

    O si lo prefieres:

        BindingSource1.Filter = "IdCliente = 'ZCUDE'"

    En este último caso, deberás encerrar entre comillas simples los valores del tipo String (alfanuméricos).


    Y para que te aparezcan nuevamente todas las filas, simplemente le tienes que asignar el valor Nothing o una cadena de longitud cero (String.Empty) a la propiedad Filter del objeto BindingSource que estés utilizando, o bien, llamar a su método RemoveFilter, que lo que hará será asignarle un valor Nothing a la propiedad Filter:

        BindingSource1.Filter = Nothing
    BindingSource1.Filter = String.Empty
    BindingSource1.RemoveFilter()

    Entiendo que para esta simple operación no es sumamente necesario que implementes un procedimiento Sub o Function.


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    viernes, 2 de febrero de 2018 16:22
    Moderador