locked
Filtrar gridview por rango de fechas RRS feed

  • Pregunta

  • Amigos hola , necesito de  su ayuda ,  tengo un gridview que lo cargue con un datasource desde aspx y ahora estoy tratando de filtrarlo por fechas y para esto cree un procedimiento almaceno que llamo desde el codebind  , pero al momento de lanzar el evento del botón me sale este error 

    Tanto DataSource como DataSourceID están definidos en 'GridView1'. Quite una definición

    este es el método que eh implementado

     private void Filtrar()
            {
                DateTime fecha1 = Convert.ToDateTime(Desde.Text);
                DateTime fecha2 = Convert.ToDateTime(Hasta.Text);
                string cn = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
                SqlDataAdapter adp = new SqlDataAdapter("FiltrarAsignacion", cn);
                adp.SelectCommand.CommandType = CommandType.StoredProcedure;
                adp.SelectCommand.Parameters.Add("@Fecha", SqlDbType.DateTime).Value = Convert.ToDateTime(fecha1);
                adp.SelectCommand.Parameters.Add("@Fecha2", SqlDbType.DateTime).Value = Convert.ToDateTime(fecha2);

                DataTable dt = new DataTable();
                adp.Fill(dt);
                dgvInstrumentador.DataSourceID = Nothing;
                dgvInstrumentador.DataSource = dt;
                dgvInstrumentador.DataBind();



            }

     hay alguna forma de llamar el datasource que tiene el grid y filtrarlo por fechas ,espero me puedan ayudar . 


    Daniel

    miércoles, 22 de enero de 2020 21:24

Respuestas

  • Leandro muchas gracias por tu respuestas , logre hacerlo utilizando el datasource ya definido en el aspx , lo que hice fue en el codebind invoque el sqldatasource1 y llamar el filterExpression y luego declare la sentencia que necesitaba para filtrar por rango de fechas, se los comparto por si alguien llega a necesitarlo.

     SqlDataSource1.FilterExpression = "FechaCirugia  >= '" + fecha1+ "'and FechaCirugia<='" + fecha2+"' ";
                dgvInstrumentador.DataBind();


    Daniel

    • Marcado como respuesta Dannycv012 jueves, 23 de enero de 2020 13:29
    jueves, 23 de enero de 2020 13:29

Todas las respuestas

  • hola

    >>Tanto DataSource como DataSourceID están definidos en 'GridView1'

    Porque defines un DataSourceID sino vas a vincular con controles al grid?

    Podrias quitar el SqlDataSource

    BaseDataBoundControl.DataSourceID Property

    si configuras la conexion a la DB usando controls en el html despues tienes que splicar filtros por medio de este o sino quitarlos

    Si quiere filtrar por medio del control tienes que usar el

    SqlDataSource.SelectParameters Property

    ----

    Si quieres hacerlo desde codigo quita el valor del DataSourceID y en el evento click de algun boton invocar ese codigo que publicaste

    Pero no uses esta linea

    dgvInstrumentador.DataSourceID = Nothing;

    quitalo desde el html, sino el control se vinculara a los datos cuando carga

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 22 de enero de 2020 21:52
  • Leandro muchas gracias por tu respuestas , logre hacerlo utilizando el datasource ya definido en el aspx , lo que hice fue en el codebind invoque el sqldatasource1 y llamar el filterExpression y luego declare la sentencia que necesitaba para filtrar por rango de fechas, se los comparto por si alguien llega a necesitarlo.

     SqlDataSource1.FilterExpression = "FechaCirugia  >= '" + fecha1+ "'and FechaCirugia<='" + fecha2+"' ";
                dgvInstrumentador.DataBind();


    Daniel

    • Marcado como respuesta Dannycv012 jueves, 23 de enero de 2020 13:29
    jueves, 23 de enero de 2020 13:29