Foros del Web » Programando para Internet » ASPX (.net) »

Mantener filtro en la paginación

Estas en el tema de Mantener filtro en la paginación en el foro de ASPX (.net) en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/05/2008, 03:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 30
Antigüedad: 16 años, 1 mes
Puntos: 0
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
  #2 (permalink)  
Antiguo 29/05/2008, 03:02
Avatar de Javier Santamaria  
Fecha de Ingreso: julio-2007
Mensajes: 296
Antigüedad: 16 años, 9 meses
Puntos: 1
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
  #3 (permalink)  
Antiguo 29/05/2008, 10:37
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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 . . .

Exentrit - Soluciones SharePoint & Net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:18.