none
cambiar la seleccion de un datagridview al realizar una busqueda RRS feed

  • Pregunta

  • buenas tardes!! tengo un datagridview con un listado de atletas y un textbox donde ingreso el "dni" para iniciar la busqueda mediante un boton, he logrado que encuentre la fila buscada, necesitaria que vaya automaticamente a esa fila (para visualizarla) y ademas de encontrarla tambien cambie la seleccion (Sigue quedando la predefinida, fila 0)

    paso el codgo que tengo..y como siempre muchas gracias por su atencion!!

       Private Sub btnBuscar_Click(sender As System.Object, e As System.EventArgs) Handles btnBuscar.Click
            buscar()
        End Sub

        Function buscar() As Boolean
            For Each fila As DataGridViewRow In Me.dgvlistaatletas.Rows
                If fila.Cells.Item(3).Value.ToString() = Me.TextBox1.Text Then    ' busca por dni del atleta
                    fila.Selected = True
                             ElseIf fila.Cells.Item(3).Value.ToString() <> Me.TextBox1.Text Then
                    fila.Selected = False
                End If
            Next
            Return True
        End Function


    valeria heredia


    viernes, 4 de agosto de 2017 16:32

Respuestas

  • Has agregado a la clase un procedimiento Function sin embargo el valor de retorno (de tipo Boolean) nunca lo utilizas, entonces puede dar lo mismo si escribes un procedimiento Sub, ¿verdad?

    Sin embargo, puedes dar un paso más -de hecho pueden ser muchos mas- y otorgarle algo mas de utilidad a la función de manera que podamos invocarla cada vez que queramos hacer alguna búsqueda sobre cualquier grilla de la clase, en cualquier columna (inicialmente restringido a un tipo String) y basado en un criterio de búsqueda, por ejemplo:

    - Función

    Private Function Buscar(Grid As DataGridView, Col As String, SearchText As String) As DataGridViewRow
    
    	Return Grid.Rows.Cast(Of DataGridViewRow)().
    		FirstOrDefault(Function(r) Convert.ToString(r.Cells(Col).Value).Equals(SearchText))
    
    End Function

    - Invocar función

    Private Sub btnBuscar_Click(sender As Object, e As EventArgs) Handles btnBuscar.Click
    
    	Dim Fila = Buscar(DataGridView1, "ColName", TextBox1.Text)
    
    	If Fila Is Nothing Then
    		MessageBox.Show("No se han contrado resultados")
    		Return
    	End If
    
    	DataGridView1.ClearSelection()	
    	DataGridView1.CurrentCell = Fila.Cells(0)
    	DataGridView1.Focus()
    	Fila.Selected = True
    
    End Sub


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    viernes, 4 de agosto de 2017 18:00