elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:31  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderador: [D4N93R])
| | | |-+  AYUDA - FILTRO CON GRIDVIEW (pintar filas).
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AYUDA - FILTRO CON GRIDVIEW (pintar filas).  (Leído 893 veces)
[Black Vomit]

Desconectado Desconectado

Mensajes: 15


JAVA ADICTED


Ver Perfil
AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« en: 25 Noviembre 2011, 14:12 »

Saludos estimados, intenté buscar ayuda en el foro MSDN pero fue poco fructífero, tengo lo siguiente:
Quiero realizar un filtro en mi website que, según lo ingresado me pinte las filas de mi gridview, sean los caracteres que sean.  Por ejemplo, ingreso "adm", le doy al botón BUSCAR y debería seleccionarme y pintarme las filas que contenga esas letras en cualquiera de sus campos.

Lo ideal es que se ejecute en el evento CLICK de mi botón buscar.  Tengo un texbox en dónde se ingresa la búsqueda, el botoón y el gridview en dónde se pintarian las filas y me carga los datos de mi base de datos.

Cualquier ayuda sería bienvenida, estoy hace días con esto.!!

Lo estoy realizando en c# + sqlserver.
Acá el código de mi evento click del botoón BUSCAR.

        protected void btn_IngFormSearch_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in gv_ListarCalibres.Rows)
            {

                for (int i = 1; i <= 11; i++)
                {
                    TextBox txt = row.FindControl(string.Format("TextBox{0}", i)) as TextBox;
                    //if ((txt != null) && (txt.Text == txt_IngFormBuscador.Text))
                        //e.row.BackColor = System.Drawing.Color.Red;
                }

            }
        }

PD: Soy novato en c#, pero algo le aplico.   :¬¬


En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« Respuesta #1 en: 25 Noviembre 2011, 14:45 »

Se me ocurren dos posibilidades;

1) Almacenar el source de tu consulta en una SESSION (o VIEWSTATE mejor) para no ir contra la DB cada vez, para luego hacer la búsqueda desde tu textbox, recuperar los valores desde el SESSION, y volver a realizar el bind. Al realizar el bind se dispara el evento RowDataBound, y ahí puedes realizar la búsqueda y pintar.

2) Realizar los cambios desde javascript, para lo cual deberías de registrar tu script y llamarlo desde el click.

La primera opción es la más sencilla :)

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

[Black Vomit]

Desconectado Desconectado

Mensajes: 15


JAVA ADICTED


Ver Perfil
Re: AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« Respuesta #2 en: 25 Noviembre 2011, 14:49 »

Se me ocurren dos posibilidades;

1) Almacenar el source de tu consulta en una SESSION (o VIEWSTATE mejor) para no ir contra la DB cada vez, para luego hacer la búsqueda desde tu textbox, recuperar los valores desde el SESSION, y volver a realizar el bind. Al realizar el bind se dispara el evento RowDataBound, y ahí puedes realizar la búsqueda y pintar.

2) Realizar los cambios desde javascript, para lo cual deberías de registrar tu script y llamarlo desde el click.

La primera opción es la más sencilla :)

Saludos

Saludos viejo! mira, mejoré mi código, me gustaría seguir la lógica que estoy implementando.

    protected void btn_IngFormSearch_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in gv_ListarCalibres.Rows)
            {

                for (int i = 1; i <= 11; i++)
                {
                    TextBox txt = row.FindControl(string.Format("TextBox{0}", i)) as TextBox;
                        if ((txt != null) && (txt.Text == txt_IngFormBuscador.Text))
                        {
                            row.BackColor = System.Drawing.Color.Red;
                        }
                }

            }
        }


Pero no me pinta las filas .... :(   :-\ :-\ :-\ :-\

¿Me podrías ayudar a clarificar la primera opción, en base al código que ya tengo?
PD: Soy noob  :(!!!!! y nunca he implementado un SESSION en c#  :(!!
« Última modificación: 25 Noviembre 2011, 14:51 por [Black Vomit] » En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« Respuesta #3 en: 25 Noviembre 2011, 15:05 »

Las session al igual que los viewstate son algo así ..
Código
List<string> list = new List<string>(){"palabra1","palabra2","palabra3"};
//Guardo datos en session
Session["datos"] = list;
 
//Recupero datos de session. El session guarda objects, asi que se debe de castear
List<string> list2 = (List<string>)Session["datos"];

http://adeshoras.wordpress.com/2008/08/09/el-gridview-y-sus-eventos-el-evento-rowdatabound/
Al leer el link anterior, te darás cuenta de que debes de adaptar ese código ;)

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

[Black Vomit]

Desconectado Desconectado

Mensajes: 15


JAVA ADICTED


Ver Perfil
Re: AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« Respuesta #4 en: 25 Noviembre 2011, 15:10 »

Precisamente lo estaba haciendo, ahora, desde ese evento, tengo lo siguiente:
 //____________________________________________________________________
        //----------------- FUNCION BUSCADOR /FILTRO POR CARACTER------------
        protected void btn_IngFormSearch_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in gv_ListarCalibres.Rows)
            {
                for (int i = 1; i <= 11; i++)
                {
                    TextBox txt = row.FindControl(string.Format("TextBox{0}", i)) as TextBox;
                        if ((txt != null) && (txt.Text == txt_IngFormBuscador.Text))
                        {
                            row.BackColor = System.Drawing.Color.Red;
                        }
                }

            }
        }

        //____________________________________________________________________
        //---------------- EVENTO ROWDATABOUND PINTAR FILAS ------------------
        protected void gv_ListarCalibres_RowDataBound(object sender, GridViewRowEventArgs e)
        {


            if (e.Row.RowType == DataControlRowType.DataRow && txt_IngFormBuscador.Text != "")
            {
                for (int x = 0; x < e.Row.Cells.Count; x++)
                {
                    string stock = e.Row.Cells
  • .Text;
                    if (stock.Contains(txt_IngFormBuscador.Text))
                    {
                        e.Row.Style.Add("background-color", "#C69D9D");
                    }
                }

            }
        }


Pero mi pregunta ahora es, ¿Cómo podría desde el evento click del botoón BUSCAR invocar al evento ROWDATABOUND que me pintaría mis filas?
En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« Respuesta #5 en: 25 Noviembre 2011, 15:15 »

Te lo dije más arriba ... desde el BUSCAR vuelves a invocar el DataBind de la grilla

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

[Black Vomit]

Desconectado Desconectado

Mensajes: 15


JAVA ADICTED


Ver Perfil
Re: AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« Respuesta #6 en: 25 Noviembre 2011, 15:23 »

Quizás una solución más sencilla sería crear una variable booleana global llamada CLICK =false;
Luego en el evento click del buscar darle TRUE y preguntar sobre esa variable en el rowdatabound, así:

  protected void btn_IngFormSearch_Click(object sender, EventArgs e)
        {
            click = true;
            foreach (GridViewRow row in gv_ListarCalibres.Rows)
            {
                for (int i = 1; i <= 11; i++)
                {
                    TextBox txt = row.FindControl(string.Format("TextBox{0}", i)) as TextBox;
                        if ((txt != null) && (txt.Text == txt_IngFormBuscador.Text))
                        {
                            row.BackColor = System.Drawing.Color.Red;
                        }
                }

            }
        }

        //____________________________________________________________________
        //---------------- EVENTO ROWDATABOUND PINTAR FILAS ------------------
        protected void gv_ListarCalibres_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow && txt_IngFormBuscador.Text != "" && click == true )
            {
                for (int x = 0; x < e.Row.Cells.Count; x++)
                {
                    string stock = e.Row.Cells
  • .Text;
                    if (stock.Contains(txt_IngFormBuscador.Text))
                    {
                        e.Row.Style.Add("background-color", "#C69D9D");
                    }
                }

            }
        }

¿Sigue tu misma lógica o no? pero no pinta nada.  Gracias por tus sugerencias  estimado.
En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« Respuesta #7 en: 25 Noviembre 2011, 15:30 »

Para darle estilos a una grilla debes de hacerlo durante la carga de las filas, luego de que esta creada no puedes hacerlo, a menos que sea desde javascript, así que debes de disparar el databind o no va a haber cambio alguno.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: AYUDA - FILTRO CON GRIDVIEW (pintar filas).
« Respuesta #8 en: 8 Diciembre 2011, 12:14 »

http://www.aspdotnet-suresh.com/2011/12/search-records-in-gridview-and.html

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Filtro en VB
Programación Visual Basic
Shaxia 0 250 Último mensaje 21 Enero 2006, 04:16
por Shaxia
Ayuda filtro de mac
Hacking Wireless
scotland25 5 568 Último mensaje 12 Diciembre 2006, 05:30
por Chapex
ayuda con mi base de datos acces,datagrid sumar y restar columnas o filas
Programación Visual Basic
angelrobi 1 3,528 Último mensaje 19 Diciembre 2009, 04:05
por seba123neo
Ayuda con enumeracion de filas
PHP
mokoMonster 14 2,021 Último mensaje 14 Febrero 2010, 11:53
por Ari Slash
Ayuda con agrupar filas en mysql
Bases de Datos
yovaninu 2 585 Último mensaje 8 Marzo 2012, 04:31
por yovaninu
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines