elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  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 5,117 veces)
[Black Vomit]

Desconectado Desconectado

Mensajes: 15


JAVA ADICTED


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

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
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

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
"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 pm »

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 pm por [Black Vomit] » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

Las session al igual que los viewstate son algo así ..
Código
  1. List<string> list = new List<string>(){"palabra1","palabra2","palabra3"};
  2. //Guardo datos en session
  3. Session["datos"] = list;
  4.  
  5. //Recupero datos de session. El session guarda objects, asi que se debe de castear
  6. 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
"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 pm »

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
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

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
"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 pm »

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
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

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
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

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
"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 1,105 Último mensaje 21 Enero 2006, 04:16 am
por Shaxia
ayuda con mi base de datos acces,datagrid sumar y restar columnas o filas
Programación Visual Basic
angelrobi 1 7,591 Último mensaje 19 Diciembre 2009, 04:05 am
por seba123neo
Ayuda con enumeracion de filas « 1 2 »
PHP
mokoMonster 14 4,940 Último mensaje 14 Febrero 2010, 11:53 am
por Ari Slash
Ayuda con agrupar filas en mysql
Bases de Datos
yovaninu 2 3,131 Último mensaje 8 Marzo 2012, 04:31 am
por yovaninu
AYUDA!!!Con programa de FILAS
Programación C/C++
Emily 1 870 Último mensaje 20 Febrero 2019, 17:13 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines