none
Hacer boton que busque en Grid habiendo antes filtrado por Droppdawnlist RRS feed

  • Pregunta

  • Buenas tardes el titulo de la pregunto lo resume, 

    mi codigo esta armado de la siguiente forma soy algo novato consultando los datos SQL

    public partial class Archivo : System.Web.UI.Page
        {
            public static System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("Data Source=192.168.24.52; Initial Catalog=CAD_Archivo_Prueba; User Id=usertecnologia; Password=123456;");

            
            protected void Page_Load(object sender, EventArgs e)
            {
               

                if (!IsPostBack && !IsCallback)
                {
                    gridArchivo.DataBind();              
                }

                if (Session["idCliente"]==null)
                    SqlDataSourceAsunto.SelectCommand = "SELECT codigo, [caso] FROM [Caso] where idcliente = 0 ORDER BY [caso] ";
                else
                    SqlDataSourceAsunto.SelectCommand = "SELECT codigo, [caso] FROM [Caso] where idcliente = " + Session["idCliente"] + " ORDER BY [caso] ";            
            }       

            protected void comboCliente_SelectedIndexChanged(object sender, EventArgs e)
            {
                Session["idCliente"] = comboCliente.SelectedValue;
                SqlDataSourceAsunto.SelectCommand = "SELECT codigo, [idCaso] FROM [Caso] where idcliente = " + comboCliente.SelectedValue + " ORDER BY[Caso] ";
            }

            protected void comboEstado_SelectedIndexChanged(object sender, EventArgs e)
            {
                Session["id"] = comboEstado.SelectedValue;
                SqlDataSourceAsunto.SelectCommand = "SELECT  [serieDoc] FROM [SerieDoc] where id = " + comboEstado.SelectedValue + " ORDER BY [serieDoc] ";
            }

            protected void Button1_Click(object sender, EventArgs e)
            {
                int nombre = Convert.ToInt16(comboCliente.SelectedValue);
                Session["idCliente"] = nombre;
                string caso = comboCaso.SelectedValue;
                Session["idCaso"] = caso;
                int serieDoc = Convert.ToInt16(comboEstado.SelectedValue);
                Session["serieDoc"] = serieDoc;
                gridArchivo.DataBind();
                Session["gridArchivo"] = CreateDataArchivo(idCliente, idCaso, idSerie);
                gridArchivo.DataSource = Session["gridArchivo"];
                gridArchivo.DataBind(); 
            } 

    espero me puedan ayudar la verdad no se como hacerlo.

    de ante mano gracias 

    miércoles, 3 de junio de 2015 20:59

Respuestas

  • hola

    porque usas de esa forma el SqlDataSource, no es asi como se utiliza ,se supone que la query es fija y debes usar parametros, concatenarlos en un string es una pesima idea

    o sino usa ado.net de forma directa

    protected void comboCliente_SelectedIndexChanged(object sender, EventArgs e)
    {
    	DataTable dt = new DataTable();   
    	using (SqlConnection conn = new SqlConnection("connection string"))   
    	{       
    		string query = "SELECT codigo, [idCaso] FROM [Caso] where idcliente = @id ORDER BY[Caso] ";        
    		SqlCommand cmd = new SqlCommand(query, conn);       
    		cmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboCliente.SelectedValue));    
    		
    		SqlDataAdapter da = new SqlDataAdapter(cmd);        
    		da.Fill(dt);  
    		
    		gridArchivo.DataSource = dt;
    		gridArchivo.DataBind();             	
    	}
    }

    es mas codigo pero lo usas de forma correcta ya que el SqlDataSource asi como lo implementas esta mal

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta hxcbps jueves, 4 de junio de 2015 22:14
    jueves, 4 de junio de 2015 0:16

Todas las respuestas

  • hola

    porque usas de esa forma el SqlDataSource, no es asi como se utiliza ,se supone que la query es fija y debes usar parametros, concatenarlos en un string es una pesima idea

    o sino usa ado.net de forma directa

    protected void comboCliente_SelectedIndexChanged(object sender, EventArgs e)
    {
    	DataTable dt = new DataTable();   
    	using (SqlConnection conn = new SqlConnection("connection string"))   
    	{       
    		string query = "SELECT codigo, [idCaso] FROM [Caso] where idcliente = @id ORDER BY[Caso] ";        
    		SqlCommand cmd = new SqlCommand(query, conn);       
    		cmd.Parameters.AddWithValue("@id", Convert.ToInt32(comboCliente.SelectedValue));    
    		
    		SqlDataAdapter da = new SqlDataAdapter(cmd);        
    		da.Fill(dt);  
    		
    		gridArchivo.DataSource = dt;
    		gridArchivo.DataBind();             	
    	}
    }

    es mas codigo pero lo usas de forma correcta ya que el SqlDataSource asi como lo implementas esta mal

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta hxcbps jueves, 4 de junio de 2015 22:14
    jueves, 4 de junio de 2015 0:16
  • Hola buenos días la solución que  tu me das me va filtrar cuando seleccione en el Dropdawlist, pero en cuanto al botón buscar que tengo aquí

       protected void Button1_Click(object sender, EventArgs e)
            {
                int nombre = Convert.ToInt16(comboCliente.SelectedValue);
                Session["idCliente"] = nombre;
                string caso = comboCaso.SelectedValue;
                Session["idCaso"] = caso;
                int serieDoc = Convert.ToInt16(comboEstado.SelectedValue);
                Session["serieDoc"] = serieDoc;
                gridArchivo.DataBind();
                Session["gridArchivo"] = CreateDataArchivo(idCliente, idCaso, idSerie);
                gridArchivo.DataSource = Session["gridArchivo"];
                gridArchivo.DataBind(); 
            } 

    ¿me lo filtrara al momento en que busque según los criterios que le pase en el dropdawnlist o estare mal como lo estoy buscando ?

    y al agregar tu código me sale el siguiente error

    Both DataSource and DataSourceID are defined on ‘gridArchivo′. Remove one definition. 

    me imagino que ese error se debe a que yo asocie al grid un SqlDatasource pero no se como cuadra los dos 


     
    jueves, 4 de junio de 2015 14:01