none
Llenar gridview desde data table con session RRS feed

  • Pregunta

  • Hola,

    Me estoy volviendo loco y recurro aquí otra vez. Intentare explicarme bien y pondré el código para que lo vean mejor y me puedan ayudar si pueden.

    Tengo dos DropDownList con el evento OnSelectedIndexChanged y AutoPostBack= true, cuando se cambia el index me lanza este evento:

     DataTable dtq = new DataTable();
    
                string sql = "SELECT dbo.M_Ensayo.Nombre_Informe, dbo.M_Ensayo.Enac, dbo.Detalle_Especificacion.Cod_Ensayo, dbo.M_Especificacion.Micro FROM dbo.Detalle_Especificacion INNER JOIN" +
                    " dbo.M_Ensayo ON dbo.Detalle_Especificacion.Cod_Ensayo = dbo.M_Ensayo.Id_Ensayo INNER JOIN" +
                    " dbo.M_Especificacion ON dbo.Detalle_Especificacion.Cod_Especificacion = dbo.M_Especificacion.Id_Especificacion WHERE(dbo.Detalle_Especificacion.Cod_Especificacion ='" + esq.SelectedValue + "')";
    
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conexion"].ToString()))
                {
                    conn.Open();
    
                    SqlCommand cmd = new SqlCommand(sql, conn);
    
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
    
                    da.Fill(dtq);
                    
                    foreach (DataRow row in dtq.Rows)
                    {
    
                        
                        int cantidad = 1;
                        GVenseyos.Visible = true;
                        int numeroFilas = GVenseyos.Rows.Count;
                                     
                           DataTable Dt = (DataTable)Session["datos"];
                  
                        
                        if (Session["datos"] == null )
                        {
                            Dt = new DataTable();
                            Dt.Columns.Add("Cod_Ensayo");
                            Dt.Columns.Add("Ensayo");
                            Dt.Columns.Add("Acreditado");
                            Dt.Columns.Add("Micro");
    
                        }
                        else
                        {
                            
                            Dt = Session["datos"]  as DataTable;
                        }
    
                        int i = 0;
                        if (GVenseyos.Rows.Count > 1)
                        {
                            i = numeroFilas + 1;
                        }
                        while (cantidad > 0)
                        {
                            DataRow Fila = Dt.NewRow();
                            Fila["Cod_Ensayo"] = Convert.ToInt32(row["Cod_Ensayo"].ToString());
                            Fila["Ensayo"] = "";
    
                            cantidad--;
                            Fila["Ensayo"] = row["Nombre_Informe"].ToString();
                            Fila["Acreditado"] = row["Enac"].ToString();
                            Fila["Micro"] = row["micro"].ToString();
    
                            Dt.Rows.Add(Fila);
                        }
    
                        GVenseyos.DataSource = Dt;
                        GVenseyos.DataBind();
                        Session["datos"] = Dt;
                    }
    
                    conn.Close();
    
                }

    Todo funciona perfecto y se llena el gridview, pero cada DropDownList viene filtrado por una concion anterior y me devuelve datos distintos esta consulta. Ejemplo:

    DropDownList1--> Me devuelve comidas (Tabla maestro)

    DropDownList2--> Me devuelve bebidas (Tabla maestro)

    Y en cada evento de los DropDownList va a su evento que agrega esta consulta. 

    Bien lo que quiero es:

    Arrancando de 0, todo funciona bien, cargo de la lista alimentos y se llena el gridview, luego cago las bebidas y se agregan bien también. 

    Pero no consigo que si alguien se ha confundido y camba cualquiera de los dos DropDownList entra en el evento y me agrega mas datos de la tabla detalle, o si consigo que me quite me quita todos, no me mantiene los del otro DropDownList. Aqui una cosa practica:

    1. DropDownList Alimentos 
    2. Carne
    3. Pescado
    • DropDownList Bebidas
    • Agua
    • Cerveza
    • Refesco

    Si alguien quiere cambiar en bebidas porque se ha confundido, elimina todo el gridview y las comidas esta bien. Quiero que las comidas se mantengan pero cambie las bebidas.

    Me pueden ayudar: Es posible?

    jueves, 26 de septiembre de 2019 14:06

Todas las respuestas

  • Hola,

    Me estoy volviendo loco y recurro aquí otra vez. Intentare explicarme bien y pondré el código para que lo vean mejor y me puedan ayudar si pueden.

    Tengo dos DropDownList con el evento OnSelectedIndexChanged y AutoPostBack= true, cuando se cambia el index me lanza este evento:

     DataTable dtq = new DataTable();
    
                string sql = "SELECT dbo.M_Ensayo.Nombre_Informe, dbo.M_Ensayo.Enac, dbo.Detalle_Especificacion.Cod_Ensayo, dbo.M_Especificacion.Micro FROM dbo.Detalle_Especificacion INNER JOIN" +
                    " dbo.M_Ensayo ON dbo.Detalle_Especificacion.Cod_Ensayo = dbo.M_Ensayo.Id_Ensayo INNER JOIN" +
                    " dbo.M_Especificacion ON dbo.Detalle_Especificacion.Cod_Especificacion = dbo.M_Especificacion.Id_Especificacion WHERE(dbo.Detalle_Especificacion.Cod_Especificacion ='" + esq.SelectedValue + "')";
    
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conexion"].ToString()))
                {
                    conn.Open();
    
                    SqlCommand cmd = new SqlCommand(sql, conn);
    
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
    
                    da.Fill(dtq);
                    
                    foreach (DataRow row in dtq.Rows)
                    {
    
                        
                        int cantidad = 1;
                        GVenseyos.Visible = true;
                        int numeroFilas = GVenseyos.Rows.Count;
                                     
                           DataTable Dt = (DataTable)Session["datos"];
                  
                        
                        if (Session["datos"] == null )
                        {
                            Dt = new DataTable();
                            Dt.Columns.Add("Cod_Ensayo");
                            Dt.Columns.Add("Ensayo");
                            Dt.Columns.Add("Acreditado");
                            Dt.Columns.Add("Micro");
    
                        }
                        else
                        {
                            
                            Dt = Session["datos"]  as DataTable;
                        }
    
                        int i = 0;
                        if (GVenseyos.Rows.Count > 1)
                        {
                            i = numeroFilas + 1;
                        }
                        while (cantidad > 0)
                        {
                            DataRow Fila = Dt.NewRow();
                            Fila["Cod_Ensayo"] = Convert.ToInt32(row["Cod_Ensayo"].ToString());
                            Fila["Ensayo"] = "";
    
                            cantidad--;
                            Fila["Ensayo"] = row["Nombre_Informe"].ToString();
                            Fila["Acreditado"] = row["Enac"].ToString();
                            Fila["Micro"] = row["micro"].ToString();
    
                            Dt.Rows.Add(Fila);
                        }
    
                        GVenseyos.DataSource = Dt;
                        GVenseyos.DataBind();
                        Session["datos"] = Dt;
                    }
    
                    conn.Close();
    
                }

    Todo funciona perfecto y se llena el gridview, pero cada DropDownList viene filtrado por una concion anterior y me devuelve datos distintos esta consulta. Ejemplo:

    DropDownList1--> Me devuelve comidas (Tabla maestro)

    DropDownList2--> Me devuelve bebidas (Tabla maestro)

    Y en cada evento de los DropDownList va a su evento que agrega esta consulta. 

    Bien lo que quiero es:

    Arrancando de 0, todo funciona bien, cargo de la lista alimentos y se llena el gridview, luego cago las bebidas y se agregan bien también. 

    Pero no consigo que si alguien se ha confundido y camba cualquiera de los dos DropDownList entra en el evento y me agrega mas datos de la tabla detalle, o si consigo que me quite me quita todos, no me mantiene los del otro DropDownList. Aqui una cosa practica:

    1. DropDownList Alimentos 
    2. Carne
    3. Pescado
    • DropDownList Bebidas
    • Agua
    • Cerveza
    • Refesco

    Si alguien quiere cambiar en bebidas porque se ha confundido, elimina todo el gridview y las comidas esta bien. Quiero que las comidas se mantengan pero cambie las bebidas.

    Me pueden ayudar: Es posible?

    jueves, 26 de septiembre de 2019 14:06