none
Buscar en un Campo y filtrar mientras se escribe y sin perder el foco RRS feed

  • Pregunta

  • Tengo un textbox dentro de un toolstrippanel

    Al textbox le aplique un evento para filtrar una tabla mientras escribo pero cuando tiene que retomar el foco no lo hace. Donde esta el error. Estoy programando con C#

            private void BusquedaTextBox_TextChanged(object sender, EventArgs e)
            {
                string F = BusquedaTextBox.Text;
                DataView DV = new DataView(ConjuntoDatos.Tables[0]);
    
                DV.RowFilter = "Codigo LIKE '%" + F + "%' OR Nombre LIKE '%" + F + "%' OR Revision LIKE '%" + F + "%'";
                ControlDatos.DataSource = DV;
    
                FormatoTabla();
                DatosTemp();
                BusquedaTextBox.Focus();
            }

    viernes, 23 de febrero de 2018 15:00

Respuestas

  • para mi lo que te esta pasando es que por cada vez que escribes una tecla el consulta la base de datos y en mi opinion debes hacerlo cuando el encuentre el dato concreto aqui te dejo un ejemplo aunque es en visual el concepto es lo mismo, fijate que cargar datos tiene una linea de codigo que dice if row.coun > 0  osea si no encuentra ninguna linea hasta que lo encuentre, para mi es lo que te pasa
    Private Sub txtcodigoclase_TextChanged(sender As Object, e As EventArgs) Handles txtcodigoclase.TextChanged
            Cargar_Datos_Clase()
        End Sub
    
    
    
    Private Sub Cargar_Datos_Clase()
            Using cnn As New SqlConnection(configuracion.ConnectionString)
                Dim cmd As SqlCommand = cnn.CreateCommand()
                cmd.CommandText = "SELECT A.Descripcion FROM Clases_Tabla A  Where Codigo_Clase = @Codigo_Clase"
                cmd.Parameters.AddWithValue("@Codigo_Clase", CStr(txtcodigoclase.Text))
                Dim da As New SqlDataAdapter(cmd)
                Dim dt As New DataTable
                da.Fill(dt)
                If dt.Rows.Count > 0 Then
                    Dim row As DataRow = dt.Rows(0)
                    Me.lbldescripcion.Text = CStr(row("Descripcion"))
                End If
            End Using
        End Sub

    sábado, 24 de febrero de 2018 0:18
  • Hola, podrías revisar este artículo

    C# – AutoComplete ComboBox o TextBox


    Votar es agradecer.
    Saludos.
    Lima-Perú

    viernes, 23 de febrero de 2018 16:53
  • ya encontre la solucion. use un bindingsource. dejo el codigo por si alguien lo necesita

    Public Sub Bucar(ByVal D As String)
            Dim F As BindingSource = New BindingSource
            F.DataSource = ListaModificaciones.ControlDatos.DataSource
            F.Filter = Campos(0) + " like '%" + D + "%' or " +
                       Campos(1) + " like '%" + D + "%' or " +
                       Campos(2) + " like '%" + D + "%' or " +
                       Campos(4) + " like '%" + D + "%' or " +
                       Campos(5) + " like '%" + D + "%' or " +
                       Campos(6) + " like '%" + D + "%'"
            Formato()
        End Sub
    en el evento textchange llamo a este metodo y funciono. Gracias a todos

    Alexis Kuhn

    • Marcado como respuesta Alexis Kuhn martes, 6 de marzo de 2018 19:00
    martes, 6 de marzo de 2018 19:00

Todas las respuestas

  • Hola, podrías revisar este artículo

    C# – AutoComplete ComboBox o TextBox


    Votar es agradecer.
    Saludos.
    Lima-Perú

    viernes, 23 de febrero de 2018 16:53
  • hola la tabla que filtro es un datagridview. De hecho consegui que me filtrara, pero lo que no logro conseguir es que el textbox siga con el foco para seguir tipeando.

    Gracias igual

    viernes, 23 de febrero de 2018 16:59
  • para mi lo que te esta pasando es que por cada vez que escribes una tecla el consulta la base de datos y en mi opinion debes hacerlo cuando el encuentre el dato concreto aqui te dejo un ejemplo aunque es en visual el concepto es lo mismo, fijate que cargar datos tiene una linea de codigo que dice if row.coun > 0  osea si no encuentra ninguna linea hasta que lo encuentre, para mi es lo que te pasa
    Private Sub txtcodigoclase_TextChanged(sender As Object, e As EventArgs) Handles txtcodigoclase.TextChanged
            Cargar_Datos_Clase()
        End Sub
    
    
    
    Private Sub Cargar_Datos_Clase()
            Using cnn As New SqlConnection(configuracion.ConnectionString)
                Dim cmd As SqlCommand = cnn.CreateCommand()
                cmd.CommandText = "SELECT A.Descripcion FROM Clases_Tabla A  Where Codigo_Clase = @Codigo_Clase"
                cmd.Parameters.AddWithValue("@Codigo_Clase", CStr(txtcodigoclase.Text))
                Dim da As New SqlDataAdapter(cmd)
                Dim dt As New DataTable
                da.Fill(dt)
                If dt.Rows.Count > 0 Then
                    Dim row As DataRow = dt.Rows(0)
                    Me.lbldescripcion.Text = CStr(row("Descripcion"))
                End If
            End Using
        End Sub

    sábado, 24 de febrero de 2018 0:18
  • Pregunta:  ¿Sabe usted con seguridad que el campo de búsqueda ha perdido el enfoque?  ¿Sabe usted cuál control tiene el enfoque de teclado cuando supuestamente termina de ejecutar la rutina?

    Jose R. MCP
    Code Samples

    sábado, 24 de febrero de 2018 5:01
    Moderador
  • Hola webJose

    Para que los colaboradores del foro puedan asesorarte de manera correcta, favor de crear tu consulta a parte.

    Quedamos al pendiente de cualquier comentario de tu parte.

    Saludos Cordiales.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 1 de marzo de 2018 16:44
    Moderador
  • Hola webJose

    Para que los colaboradores del foro puedan asesorarte de manera correcta, favor de crear tu consulta a parte.

    Quedamos al pendiente de cualquier comentario de tu parte.

    Saludos Cordiales.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    Gracias Pablo, mi pregunta era para el que propuso la pregunta original.  Le estaba pidiendo información adicional para ayudarle a resolver su problema.

    Jose R. MCP
    Code Samples

    jueves, 1 de marzo de 2018 17:01
    Moderador
  • ya encontre la solucion. use un bindingsource. dejo el codigo por si alguien lo necesita

    Public Sub Bucar(ByVal D As String)
            Dim F As BindingSource = New BindingSource
            F.DataSource = ListaModificaciones.ControlDatos.DataSource
            F.Filter = Campos(0) + " like '%" + D + "%' or " +
                       Campos(1) + " like '%" + D + "%' or " +
                       Campos(2) + " like '%" + D + "%' or " +
                       Campos(4) + " like '%" + D + "%' or " +
                       Campos(5) + " like '%" + D + "%' or " +
                       Campos(6) + " like '%" + D + "%'"
            Formato()
        End Sub
    en el evento textchange llamo a este metodo y funciono. Gracias a todos

    Alexis Kuhn

    • Marcado como respuesta Alexis Kuhn martes, 6 de marzo de 2018 19:00
    martes, 6 de marzo de 2018 19:00