none
3 DropDownList que filtren los parametros en la misma grilla RRS feed

  • Pregunta


  • Buenas tardes quisiera saber como con los 3 dropdawolist realizar una consulta y que una dependa de la otra, es decir que si seleccione un parametro de uno me muestre en el otro dropdawn los posibles que puedo seleccionar, las relaciones en base de datos  ya estan hechas peor nesecita que en los DropDownList sea consecutivo al otro en las opciones que se van a elegir ya que tengo los tres pero me genera error al tratar de filtrar y mostrar en el Grid ya que pues todos tienen como función autopostback 

    pero al el segundo filtro me genera error y no me consulta lo que debe 

    en este momento tengo los dropdawolist  asi Leandro me ayudo con las consultas 

     protected void comboCaso_SelectedIndexChanged(object sender, EventArgs e)
            {
                using (SqlConnection conn = new SqlConnection("Data Source=192.168.24.52; Initial Catalog=CAD_Archivo_Prueba; User Id=usertecnologia; Password=123456;"))
                {
                    DataTable dt = new DataTable();
                    string query = "SELECT  idcliente , idCaso,[caso] FROM [Inventario_Archivo] where idcliente = @id ORDER BY [idCaso] ";
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboCliente.SelectedValue));

                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);

                    //gridArchivo.DataSourceID = String.Empty;
                    gridPrueba.DataSource = dt;
                    gridPrueba.DataBind();
                }
            }

            protected void comboEstado_SelectedIndexChanged(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                using (SqlConnection conn = new SqlConnection("Data Source=192.168.24.52; Initial Catalog=CAD_Archivo_Prueba; User Id=usertecnologia; Password=123456;"))
                {
                    string query = "SELECT  idcliente , seriedoc, [nombre],[caso],[estado] FROM [Inventario_Archivo] where idcliente = @id ORDER BY [serieDoc] ";
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboCliente.SelectedValue));

                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);

                    //gridArchivo.DataSourceID = String.Empty;
                    gridPrueba.DataSource = dt;
                    gridPrueba.DataBind();
                }
            }

    protected void comboCliente_SelectedIndexChanged(object sender, EventArgs e)
            {
                //Session["idCliente"] = comboCliente.SelectedValue;
                //SqlDataSourceAsunto.SelectCommand = "SELECT codigo, [caso] FROM [Caso] where idcliente = " + comboCliente.SelectedValue + " ORDER BY [caso] ";
                DataTable dt = new DataTable();
                using (SqlConnection conn = new SqlConnection("Data Source=192.168.24.52; Initial Catalog=CAD_Archivo_Prueba; User Id=usertecnologia; Password=123456;"))
                {
                    string query = "SELECT  idcliente , idCaso, Estado,seriedoc,[nombre],[caso],[estado],[serieDoc] FROM [Inventario_Archivo] where idcliente = @id ORDER BY [idCliente] ";
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboCliente.SelectedValue));

                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);

                    //gridArchivo.DataSourceID = String.Empty;
                    gridPrueba.DataSource = dt;
                    gridPrueba.DataBind();
                }
            }

    como puede llegar a pasar los datos al grid sin

    que se dañe o podria realizar un boton Buscar segun los datos que filtre en los DropDowList me podrian decir como lo hago 

    Me seria deinmensa ayuda su valiosa colaboracion muchas gracias


    • Editado hxcbps jueves, 4 de junio de 2015 21:28
    jueves, 4 de junio de 2015 21:15

Respuestas

  • hola

    pero es parte es la que no entiendes ?

    mas alla de las entidades o no, lo que debes analizar es como se define la query y los parametros

    veras que alli se usa

    WHERE ((@param IS NULL) OR (campo = @param))

    lo importante es poder validar si el parametro es NULL pero para eso debes usar parametros asignando un DbNull si es que quieres anularlo

    esa parte la entiendes ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 5 de junio de 2015 20:04

Todas las respuestas

  • hola

    podrias crear un filtro condicional donde asignes el valor o DbNull para anular el parametro

    Filtros Condicionales (1/2)

    el ejemplo esta en winforms pero la tecnica aplica a web sin problemas

    como veras la query es una sola pero puedes anular o no el parametro del where

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 4 de junio de 2015 21:19
  • Hola leandro la verdad no entiendo lo que muestras en tu blog como aplicarlo en mis consultas  como podria ir filtrandolas ya que tu hablas de enitdades pero yo estoy haciendo la consulta y no harmo entidades para el uso




    • Editado hxcbps jueves, 4 de junio de 2015 22:25
    jueves, 4 de junio de 2015 22:16
  • hola

    pero es parte es la que no entiendes ?

    mas alla de las entidades o no, lo que debes analizar es como se define la query y los parametros

    veras que alli se usa

    WHERE ((@param IS NULL) OR (campo = @param))

    lo importante es poder validar si el parametro es NULL pero para eso debes usar parametros asignando un DbNull si es que quieres anularlo

    esa parte la entiendes ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 5 de junio de 2015 20:04
  • muchas gracias por las respuestas, he detallado bien tu codigo en el ejemplo del blog y es de gran ayuda, mi pregunta es yo estoy consultando la base de datos mediante un Datatable y haciendo la consulta por un SqlComand, pero la pregunta es cuando listas,la enitidad PersonEntity  y pasas como parametro PersonCriteria, puedo reemplazar eso con un Datatable o como lo deberia hacer ya que no tengo entidades de negocio, ¿tendria que crear las entidades? o como lo deberia hacer sabiendo que esta es la consulta que tengo en dropdownlis, osea la verdad no he entendido adaptar la consulta que tienes en este fragmento 

    string sql = @"SELECT   P.PersonID,
                                        P.LastName,
                                        P.FirstName,
                                        P.HireDate,
                                        P.EnrollmentDate
                               FROM Person P
                                    LEFT JOIN CourseInstructor CI
                                    ON P.PersonID = CI.PersonID
                               WHERE ((@FirstName IS NULL) OR (P.FirstName LIKE '%' + @FirstName + '%'))
                                AND ((@LastName IS NULL) OR (P.LastName LIKE '%' + @LastName + '%'))
                                AND ((@HireDateFrom IS NULL) OR (P.HireDate >= @HireDateFrom))
                                AND ((@HireDateTo IS NULL) OR (P.HireDate <= @HireDateTo))
                                AND ((@EnrollmentDateFrom IS NULL) OR (P.EnrollmentDate >= @EnrollmentDateFrom))
                                AND ((@EnrollmentDateTo IS NULL) OR (P.EnrollmentDate <= @EnrollmentDateTo))
                                AND ((@Course IS NULL) OR (CI.CourseID = @Course))";

    a la consulta de mi base de datos que tengo en este momento

     string query = "SELECT  idcliente , idCaso, Estado,[nombre],[caso],[estado],[serieDoc] FROM [Inventario_Archivo] where idcliente = @id AND idcaso = '@idCaso' ";
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboCliente.SelectedValue));
                    cmd.Parameters.AddWithValue("@idCaso", Convert.ToString(comboCaso.SelectedValue));
                    

                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);

                    //gridArchivo.DataSourceID = String.Empty;
                    gridPrueba.DataSource = dt;
                    gridPrueba.DataBind();

    heche una revisada a este blog y me parecio que esta se ajustaria mas a la solucion Dropdownlist anidados 

    quisera que me ayudaras implementando la solcuion que te acabo de mensionar que me ayudaras a guiarme gracias


    • Editado hxcbps lunes, 8 de junio de 2015 4:59
    lunes, 8 de junio de 2015 0:53