Buscar fila con BindingSource en datagridview

Tratando de hallar la solución de otra manera, me encontré con el mismo problema

Tengo una caja de texto que al poner un apellido me debe buscar la fila donde se encuentre en el datagridview, pero solamente funciona si pongo igualito el mismo apellido, pero si pongo una parte del apellido no me busca nada ...

Código:

Declaro una variable

Private BindingSource1 As Windows.Forms.BindingSource = New BindingSource

en el load del form

cn.open()

Dim da As New SqlDataAdapter("select codP AS CÓDIGO,apaP AS PATERNO,amaP AS MATERNO,nomP AS NOMBRES from personal2 where apaP LIKE'%'+'" & TextBox1.Text & "'+'%' ORDER BY apaP ASC", con)

Dim dt As New DataTable
da.Fill(dt)
' enlazar el DataTable al BindingSource
BindingSource1.DataSource = dt
' enlazar los controles
DataGridView1.DataSource = BindingSource1.DataSource

tengo esta función

Function Buscar( _
ByVal Columna As String, _
ByVal texto As String, _
ByVal BindingSource As BindingSource) As Integer
Try
' si está vacío 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 String = 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

y ahora en mi botón de búsqueda

Dim ret As Integer = Buscar("PATERNO", TextBox1.Text, BindingSource1)
' si no se encontró ....
If ret = -1 Then
' mostrar un mensaje
MsgBox("No se encontró la fila", MsgBoxStyle.Critical)
Else
' volver a enlazar
DataGridView1.DataSource = BindingSource1

end if

El problema esta que funciona si y solo si pongo el mismo apellido

1 respuesta

Respuesta
1

Veo que usas controles de enlace a datos, yo no los recomiendo y no los utilizo, es posible que solo funciona una vez, porque la segunda vez el parámetro de búsqueda esta en el primero que digitaste no lo cambia a medida que tu cambias ese parámetro.

lo he probado y si funciona en la búsqueda a cada momento ("así la fila estea en la ultima fila, , me busca el registro que esta detrás y hacia adelante ,no hay pierde)

alguna idea de como colocar para que me busque al escribir cualquier letra )

No, ya te dije que yo no promuevo la utilización de estos controles por ser inseguros y por no poder tener control sobre ellos.

¿me preguntaba si tal ves tuvieras otro método de realizar esto, alguna otra función...?

que realice la busqueda y seleccione la fila en el datagridview?

La respuesta es hacer esto por código a través de ADO.NET, o si prefieres utilizar entity framework para generar el modelo de entidades y el contexto de manejo de datos y utilizar LinQ para hacer las consultas sobre el contexto que se genera el Entity Frameqork

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas