Retroceder   Foros del Web > Programación para sitios web > .NET > web forms

Respuesta
 
Herramientas Desplegado
Antiguo 28-may-2008, 03:54   #1 (permalink)
maitetxu ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 4
Mantener filtro en la paginación

Hola a todos,

Tengo problemas con mantener el filtro (opción que elijo en un dropdownlist) cuando paso de página en el datagrid. Este es mi código:


private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
drp_estado.Items.Clear();
string queryString_estado = "select estado,cod_estado from u_estado";
NEGOCIO.Funciones.cargar_dropdownlist(queryString_ estado,drp_estado,"estado","cod_estado"

dtg_incidencias.DataSource=recopilarDatos();
dtg_incidencias.DataBind();
}
}

public DataView recopilarDatos()
{
DataSet dtincidencias=new DataSet();
string sOracleIncidencias="select i.cod_incidencia, i.descripcion, a.nombre,i.fecha_incidencia, o.origen, e.estado from u_origen o, u_incidencia i, u_activo a, u_estado e, u_activo_concreto ac where i.cod_activo_concreto=ac.cod_activo_concreto and ac.cod_activo=a.cod_activo and i.cod_estado=e.cod_estado and i.cod_origen=o.cod_origen";
using (OracleConnection connection = new OracleConnection(connectionString))
{

connection.Open();
OracleDataAdapter objDA=new OracleDataAdapter(sOracleIncidencias,connection);
objDA.Fill(dtincidencias,"u_incidencia");
DataView dvincidencias=new DataView(dtincidencias.Tables["u_incidencia"]);
return dvincidencias;
}

}



public DataView recopilarDatos_conFiltro()
{
DataSet dtincidencias=new DataSet();
string sOracleIncidencias="select i.cod_incidencia, i.descripcion, a.nombre,i.fecha_incidencia, o.origen, e.estado from u_origen o, u_incidencia i, u_activo a, u_estado e, u_activo_concreto ac where i.cod_activo_concreto=ac.cod_activo_concreto and ac.cod_activo=a.cod_activo and i.cod_estado=e.cod_estado and i.cod_origen=o.cod_origen and e.estado='" + drp_estado.SelectedValue + "'";
using (OracleConnection connection = new OracleConnection(connectionString))
{

connection.Open();
OracleDataAdapter objDA=new OracleDataAdapter(sOracleIncidencias,connection);
objDA.Fill(dtincidencias,"u_incidencia");
DataView dvincidencias=new DataView(dtincidencias.Tables["u_incidencia"]);
return dvincidencias;

}

}


private void dtg_incidencias_PageIndexChanged(object sender, System.Web.UI.WebControls.DataGridPageChangedEvent Args e)
{
dtg_incidencias.CurrentPageIndex=e.NewPageIndex;
dtg_incidencias.DataSource=recopilarDatos();
dtg_incidencias.DataBind();

}

private void drp_estado_SelectedIndexChanged(object sender, System.EventArgs e)
{
dtg_incidencias.DataSource=recopilarDatos_conFiltr o();
dtg_incidencias.DataBind();
}




Alguien puede ayudarme a mantener la opción elegida en el dropdownlist cuando cambio de página y que se mantenga ese filtro también a la hora de visualizar los resultados en el datagrid al cambiar de página.

Muchas gracias
maitetxu está desconectado   Responder Citando
Antiguo 29-may-2008, 03:02   #2 (permalink)
Javier Santamaria no se puede cailificar en este momento
 
Avatar de Javier Santamaria
 
Fecha de Ingreso: julio-2007
Mensajes: 294
Respuesta: Mantener filtro en la paginación

Hola

En el evento de cambio de pagina no llamas a recopilar datos con filtro, por tanto te traera los datos sin filtrar. Debes comprobar si alguna opcion del filtro esta activa y en ese caso llamar a recopilar datos con filtro y si no llamar a recopilar datos

Saludos
Javier Santamaria está desconectado   Responder Citando
Antiguo 29-may-2008, 10:37   #3 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.552
Enviar un mensaje por MSN a RootK
Respuesta: Mantener filtro en la paginación

podrías tener dentro de tu dropdownlist un item que diga algo como "seleccione uno" con value "-1" (por ejemplo)

si desde code validas que si es "-1" no filtre quedando algo así: (ya no sería necesaria tu funcion recopilarDatos_conFiltr o(); solamente te quedarías con recopilarDatos();

Ejemplo (organizando un poco el code)

Código:
 
 public DataView recopilarDatos()
    {
        DataSet dtincidencias = new DataSet();
        string estadoId = drp_estado.SelectedValue;

        string sOracleIncidencias = "select i.cod_incidencia, i.descripcion, a.nombre,i.fecha_incidencia, o.origen, " + 
            "e.estado from u_origen o, u_incidencia i, u_activo a, u_estado e, u_activo_concreto ac " + 
            "where i.cod_activo_concreto=ac.cod_activo_concreto and ac.cod_activo=a.cod_activo and i.cod_estado=e.cod_estado " + 
            "and i.cod_origen=o.cod_origen";

        //si hay seleccion de algun estado filtrarlo
        if (!estadoId.Equals("-1"))
            sOracleIncidencias += String.Format(" and e.estado='{0}'", estadoId);

        using (OracleConnection connection = new OracleConnection(connectionString))
        {

            connection.Open();
            OracleDataAdapter objDA = new OracleDataAdapter(sOracleIncidencias, connection);
            objDA.Fill(dtincidencias, "u_incidencia");
            DataView dvincidencias = new DataView(dtincidencias.Tables["u_incidencia"]);
            return dvincidencias;
        }

    }
 private void dtg_incidencias_PageIndexChanged(object sender, System.Web.UI.WebControls.DataGridPageChangedEvent Args e)
    {
        dtg_incidencias.CurrentPageIndex=e.NewPageIndex;
        dtg_incidencias.DataSource=recopilarDatos();
        dtg_incidencias.DataBind();
    }

    private void drp_estado_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        dtg_incidencias.DataSource=recopilarDatos();
        dtg_incidencias.DataBind();
    }
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .
RootK está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 06:21.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93