Buscar en datagrid (vb 2008)

Tengo un datagrid poblado y mediante un control textbox deseo ubicar un dato en una columna especifica del datagrid. ¿Cómo hago esto?
Gracias por su ayuda.
{"lat":-12.0549754363021,"lng":-77.0500373840332}

1 respuesta

Respuesta
1
Podría ser de dos formas... aunque falta algo que expliques, por ejemplo si quieres hacerlo cada vez que se escribe algo en el TextBox, deberías entonces ocupar el evento TextChanged del TextBox, en el deberías hacer un barrido de todo el contenido del data gridview en la columna deseada, para saber si lo que hay en el textbox esta en alguna fila.
Manejo C# es y seria algo así (Si lo quieres en VB ... también lo puedo hacer, pero como domino más c# por eso me voy por ese lado, deberías ser especifico en que lenguaje lo necesitas)...
private void MiCajaTexto_TextChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < MiDataGrid.Rows.Count; i++)
            {
                if (MiDataGrid.Rows.Cells["MiColumna"].Value.ToString().Contains(this.MiCajaTexto.Text))
                {
                    this.MiDataGrid.CurrentCell = this.dgvContratos.Rows.Cells["MiColumna"];
                    break;
                }
            }
        }
El método Contains recibe un string y devuelve verdadero si el string que pasa como parámetro lo contiene la cadena que manda a llamar el método es decir:
MiTextoDePrueba. Contains(Prueba)---->Verdadero
MiTextoDePrueba. Contains(yyyyy)---->False
Con esto:
this.MiDataGrid.CurrentCell = this.dgvContratos.Rows.Cells["MiColumna"];
Hacemos que se seleccione la fila que contiene el dato.
Y por ultimo ponemos un break, de esta manera rompemos el ciclo del for.
Si tienes alguna otra duda... no dudes en enviarle... espero que mis pocos conocimientos puedan ser de tu ayuda.
Ahhh, por cierto la otra forma es agregando un botón que ejecute el procedimiento anterior, así te evitas que cada que cambie el texto se realice el barrido de los datos en el datagridview
darkastaroth:
Gracias por tu respuesta. Voy a probar de las dos formas, para evaluar cual se comporta mejor de acuerdo al volumen de datos que manejo. Programo en VB 2005 y 2008, pero se comprende perfectamente en C#.
Regresaré por aquí para contarles como me fue.
darkastaroth:
Finalmente, opté por el BUTTON y lo resolví como lo muestro enseguida:
         For lnFila = 0 To dsDAT.Tables(0).Rows.Count - 1
            If grdDAT.Item(lnFila, 0).ToString.Contains(msCODEMPR) Then
               grdDAT.CurrentRowIndex = lnFila
               grdDAT.Select(lnFila)
               Exit For
            End If
         Next
Lo explico: Despues de encontrar la fila, cuya columna coincida con el valor buscado (msCODEMPR), establezcola como fila activa (grdDAT.CurrentRowIndex = lnFila), esto hace que se desplace el datagrid y quede a la vista la fila especificada. Enseguida la selecciono (grdDAT.Select(lnFila))
Muchas gracias, darkastaroth, por tu orientación y ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas