none
¿COMO BUSCAR EN UN DATAGRIDVIEW?

    Pregunta

  • hola a todos... espero y me puedan ayudar, necesito una busqueda lo que introdusca en una caja de texto (textbox), al oprimir un boton (buscar) y si tengo mi datagriedview con todos los elementos... me muestre solo el que introduci.. en la caja de texto.

    Tambien quisiera saber si me pueden ayudar.. en como puedo buscar en una columna de un datagridview... quiero especificar la columna en la que quiero buscar...

     

    Espero que me puedan ayudar... y les doy las gracias a todos los que me han ayudado con las diferentes preguntas que he hecho muchas gracias... espero y me sigan ayudando.. bye 

    sábado, 28 de octubre de 2006 18:07

Respuestas

  • Para las busquedas uso este codigo

    Imports System.Data.SqlClient

    Public Class Form3

    Dim MiDataset As New DataSet

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim sCon As String = "Password=;User ID=sa;" & "Initial Catalog=ejemplo;" & "Data Source=."

    Dim objConn As New SqlConnection(sCon)

    Dim Comando As New SqlDataAdapter("Select * From productos", objConn)

    Dim MiDataset As New DataSet

    objConn.Open()

    Comando.Fill(MiDataset, "tabla")

    DataGridView1.DataSource = MiDataset.Tables("tabla")

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    MiDataset.Tables(0).DefaultView.RowFilter = "nombre like '%" & TextBox1.Text & "%'"

    DataGridView1.DataSource = MiDataset.Tables("tabla").DefaultView

    End Sub

    End Class

    El codigo que llena el grid esta en el form load y el que hace la busqueda se encuentra en el evento TextChanged espero te seriva

    Salu2

    Luis Saavedra

     

    jueves, 02 de noviembre de 2006 18:37
  • Hola de Nuevo... ¿ Como te va ?

    Aqui te dejo un ejemplo de como seleccionar solo las filas que contengan el texto introducido en un TextBox despues de hacer click en el boton de buscar.

    Dim filtro As String = Me.dataGridView1.Columns(Me.dataGridView1.CurrentCell.ColumnIndex).HeaderText

    ' Especificar un 'connection string' valido
    ' En este caso origen de la carpeta de la aplicacion BD1.mdb

    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd1.mdb"

    ' Crear un nuevo adaptador de datos vasado en el 'query' especificado
    Me.AdaptadorDeDatos = New OleDb.OleDbDataAdapter("Select * from Productos where " + filtro + " = " + Me.TextoSelecion.Text, connectionString)

    ' Crear un 'commandbuilder' que genere el SQL Update/Insert/Delete
    ' segun el 'selectcommand', usado para actualizar la BD
    Dim commandbuilder As New OleDb.OleDbCommandBuilder(Me.AdaptadorDeDatos)

    ' Llenar la tabla con los datos y enlazarza con el 'bindingsource'
    Dim tabla As New DataTable()
    Me.AdaptadorDeDatos.Fill(tabla)
    Me.bindingSource1.DataSource = tabla

    Para responder a tu segunda pregunta, puedes intentar utilizar la misma idea que en la respuesta de sumar... http://forums.microsoft.com/MSDN-ES/ShowPost.aspx?PostID=860634&SiteID=11, creo que te puede servir el mismo concepto. en caso contrario concreta un poquito mas tu pregunta.

    Pep Lluis,

     

    lunes, 30 de octubre de 2006 12:17

Todas las respuestas

  • Hola de Nuevo... ¿ Como te va ?

    Aqui te dejo un ejemplo de como seleccionar solo las filas que contengan el texto introducido en un TextBox despues de hacer click en el boton de buscar.

    Dim filtro As String = Me.dataGridView1.Columns(Me.dataGridView1.CurrentCell.ColumnIndex).HeaderText

    ' Especificar un 'connection string' valido
    ' En este caso origen de la carpeta de la aplicacion BD1.mdb

    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd1.mdb"

    ' Crear un nuevo adaptador de datos vasado en el 'query' especificado
    Me.AdaptadorDeDatos = New OleDb.OleDbDataAdapter("Select * from Productos where " + filtro + " = " + Me.TextoSelecion.Text, connectionString)

    ' Crear un 'commandbuilder' que genere el SQL Update/Insert/Delete
    ' segun el 'selectcommand', usado para actualizar la BD
    Dim commandbuilder As New OleDb.OleDbCommandBuilder(Me.AdaptadorDeDatos)

    ' Llenar la tabla con los datos y enlazarza con el 'bindingsource'
    Dim tabla As New DataTable()
    Me.AdaptadorDeDatos.Fill(tabla)
    Me.bindingSource1.DataSource = tabla

    Para responder a tu segunda pregunta, puedes intentar utilizar la misma idea que en la respuesta de sumar... http://forums.microsoft.com/MSDN-ES/ShowPost.aspx?PostID=860634&SiteID=11, creo que te puede servir el mismo concepto. en caso contrario concreta un poquito mas tu pregunta.

    Pep Lluis,

     

    lunes, 30 de octubre de 2006 12:17
  • gracias.. por tu respuesta me ayudo de mucho... y con respecto de la segundo pregunta, espero plantearla un mas clara...

    Bueno, por ejemplo tenemos un datagridview con 2 columnas... una es clave, y la otra nombre( de cualquier cosa o persona), ahora en una caja de texto tecleo el nombre de lo que quiero buscar ya sea una persona u cosa, (creo que ha eso le llaman busqueda dinamica) y en el momento de ir escribiendo vaya buscando en ese datagridview y solo me vaya mostrando los elementos que coincidan con lo que teclie... espero y me pudas ayudar gracias...

    miércoles, 01 de noviembre de 2006 4:07
  • Para las busquedas uso este codigo

    Imports System.Data.SqlClient

    Public Class Form3

    Dim MiDataset As New DataSet

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim sCon As String = "Password=;User ID=sa;" & "Initial Catalog=ejemplo;" & "Data Source=."

    Dim objConn As New SqlConnection(sCon)

    Dim Comando As New SqlDataAdapter("Select * From productos", objConn)

    Dim MiDataset As New DataSet

    objConn.Open()

    Comando.Fill(MiDataset, "tabla")

    DataGridView1.DataSource = MiDataset.Tables("tabla")

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    MiDataset.Tables(0).DefaultView.RowFilter = "nombre like '%" & TextBox1.Text & "%'"

    DataGridView1.DataSource = MiDataset.Tables("tabla").DefaultView

    End Sub

    End Class

    El codigo que llena el grid esta en el form load y el que hace la busqueda se encuentra en el evento TextChanged espero te seriva

    Salu2

    Luis Saavedra

     

    jueves, 02 de noviembre de 2006 18:37
  • Hola acabo de leer estos codigos y me han ayudado pero para mi caso necesito que el datagrid se posicione en la fila donde encuentra el dato y cada vez que le precione el boton buscar vaya a la siguiente fila que contenga el dato. Asi que por favor un poco de ayuda aqui!!!

     

    Muchas Gracias por su pronta respuesta!!

    SALU2

     

    miércoles, 20 de diciembre de 2006 18:06
  • Puedes usar el CurrencyManager (devuelve o establece la posicion de una lista)

    Dataview1 = New DataView(Dataset1.Tables("TLista"))

    DataGridView1.DataSource = Dataview1

    Dataview1.Sort = "Nombre"

    wbusqueda = UCase(TextBox1.Text)

    Dim myCurrencyManager As CurrencyManager

    myCurrencyManager = CType(Me.BindingContext(Dataview1), CurrencyManager)

    dim j as integer

     j = Dataview1.Find(wbusqueda)

    myCurrencyManager.Position = j

     

    martes, 26 de diciembre de 2006 22:57
  • Hola, tambien puedes hacerlo con el siguiente codigo. Considera que está en el evento TextChanged del TextBox txSearch:

    ...

    Private Sub txSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles txSearch.TextChanged

    Dim row As DataGridViewRow

    For Each row In DataGridView1.Rows

    If row.Cells("nombre").Value Like (txSearch.Text & "*") Then

    row.Selected = True

    DataGridView1.FirstDisplayedScrollingRowIndex = row.Index

    Exit For

    End If

    Next

    End Sub

    Espero que todavia te sirva.

    sábado, 13 de enero de 2007 17:16
  • buenas...una pregunta este ultimo codigo que pusiste en el textChanged lo que hace es ir buscando a medida que se va ingresando el texto no?? como es el rendimiento de este codigo? porque estaria buscando en cada fila del datagrid no??
    viernes, 09 de febrero de 2007 18:17
  • Saludos a todos desde México, esta es la primera vez que entro a un grupo y es la primera vez que uso Visual Estudio 2005, espero con el tiempo aprender y hacer muchos amigos.

    Tengo un datagridview que se conecta a una base de datos de SQL, tengo un textbox en el cual escribire el dato que deseo buscar  en una UNICA COLUMNA (o j o, NO DESEO buscar por toda la tabla, solamente en una columna), necesito que al ir escribiendo el puntero del datagridview se posicione sobre el registro mas proximo a lo que escribo en el textbox.

    Trate de usar el codigo en el evento de textchange que pusieron de ejemplo pero dice que no encuentra la columna.

    No se si tengo que crear un indice (lo cual no se hacer) 

     

    Agradesco mucho la ayuda que puedan darme, hasta pronto. :-)

    miércoles, 14 de febrero de 2007 18:00
  • Yo también tuve ese problema, mi solución fué ésta

    Declaración

    Private bindingSource1 As New BindingSource()

     

    Private Sub btnb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnb.Click

    Try

    bindingSource1.Filter = "tabla='" + ready.Text + "'"

    Me.datagridview1.Update()

    Catch ex As Exception

    MessageBox.Show("Excepcion al leer los datos:" + ex.Message)

    End Try

    End Sub

    domingo, 30 de septiembre de 2007 22:54
  • me sirvio mucho el codigo pero mi pregunta ahora es  tengo dos textbox y requiero que si ya selecciono 1 fila  yahora paso al segundo tambien me los vaya quitando sin que se actualice ejemplo

     

    tengo seleccionado todos los 1 en el grid pero mi otra columna necesito que me seleccione los de mexico

     

    y cuando realizo esto me parecen todos los de mexico independientemente del numero

    sábado, 22 de marzo de 2008 9:36
  • hola que tal mi nombre es jesus y vi tu ejemplo y  estoy tratando de utilizarlo y quiero saber si me puedes ayudar a entender el codigo de ejemplo que muestras

     

    mis problemas estan en las lineas de codigo:

     

    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd1.mdb"

     

    Me.AdaptadorDeDatos = New OleDb.OleDbDataAdapter("Select * from Productos where " + filtro + " = " + Me.TextoSelecion.Text, connectionString)

     

    Dim commandbuilder As New OleDb.OleDbCommandBuilder(Me.AdaptadorDeDatos)

     

    mi duda es si me puedes ayudar a entender estas lineas  por ejemplo que es el AdaptadorDeDatos y el texto sobre comillas "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd1.mdb"

    viernes, 24 de octubre de 2008 16:10
  • hola que tal mi nombre es jesus y vi tu ejemplo y  estoy tratando de utilizarlo y quiero saber si me puedes ayudar a entender el codigo de ejemplo que muestras

     

    mis problemas estan en las lineas de codigo:

     

    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd1.mdb"

     

    Me.AdaptadorDeDatos = New OleDb.OleDbDataAdapter("Select * from Productos where " + filtro + " = " + Me.TextoSelecion.Text, connectionString)

     

    Dim commandbuilder As New OleDb.OleDbCommandBuilder(Me.AdaptadorDeDatos)

     

    mi duda es si me puedes ayudar a entender estas lineas  por ejemplo que es el AdaptadorDeDatos y el texto sobre comillas "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd1.mdb"

    lunes, 27 de octubre de 2008 15:41
  • Según el ejemplo el AdaptadorDeDatos es un objeto de tipo OleDB que almacena el resultado de la consulta en la base de datos que se define en variable connectionString según el texto de búsqueda o filtro.

     

    Para ayudarte a entender que se obtiene en la variable connectionString, puedes leer en el link (Inglés)

     

    http://www.carlprothman.net/Default.aspx?tabid=87

     

    lunes, 27 de octubre de 2008 21:54