none
LLenar un datatable y despues un gridview con un chechbox RRS feed

  • Pregunta

  • Tengo un gridview1 con informacion que ire filtrando con campos, periodo de fecha,area, nombre, y estatus de envio. y cuando filtro una informacion de un residuo parece en el gridview1 y tengo que seleccionar los que se  desee sacr de la empresa

    GRIDVIEW1

    check    nombre         area            peso           estatus

         x       residuo1       planta1         200            CAPTURADO

          x       residuo1         planta1         300         CAPTURADO


    LA X ES QUE ESTA SELECCIONADO

    y se guarda en un datatable y lo muestra en un gridview2 pero se muestra

    GRIDVIEW2

       nombre         area            peso           estatus

        residuo1       planta1         400            CAPTURADO

         residuo1         planta1         400         CAPTURADO

    cuando necesito que muestre

       nombre         area            peso           estatus

        residuo1       planta1         800            CAPTURADO

    y otro problema es que cada vez que filtro la informacion del gridview1 para seleccionar otro residuo la informacion del gridview 2 se actualiza borrando lo anterior y poniendo el residuo nuevo seleccioado.

    ahorita solo tengo para nombre y peso planta 1

       protected void seleccionar2(object sender, EventArgs e)
            {

                DataTable dt = new DataTable();
                dt.Columns.Add("Nombre");
                dt.Columns.Add("pesoM1");
               
                Generar.Visible = true;
                generar2.Visible = true;
                var result = from row in GridView1.Rows.Cast<GridViewRow>()
                             where ((CheckBox)row.FindControl("chbItem")).Checked
                             select new
                             {
                                 tipo = row.Cells[4].Text,
                                 peso = float.Parse(row.Cells[5].Text),
                                 cantidad = float.Parse(row.Cells[19].Text),
                                 Planta2 = (row.Cells[25].Text),
                                 nombre2 = (row.Cells[4].Text),
                             };
                for (int i = 0; i < GridView1.Rows.Count; i++)
                {
                    CheckBox chk = GridView1.Rows[i].FindControl("chbItem") as CheckBox;
                    String nombre = (GridView1.Rows[i].Cells[4].Text);
                    String plan = (GridView1.Rows[i].Cells[25].Text);
                  
                    if (chk.Checked)
                    {
                            DataRow row = dt.NewRow();
                        float M1PAcGa1 = float.Parse(result.Where(x => x.nombre2 == name.SelectedItem.ToString() && x.Planta2 == "PLANTA 1").Sum(x => x.peso).ToString()) * 1000;
                        row["pesoPlanta1"] = Convert.ToString(M1PAcGa1);

                        row["Nombre"] = Convert.ToString((GridView1.Rows[i].Cells[4].Text).ToString());

                            dt.Rows.Add(row);
                        //sqlda.Fill(dt);
                        GridView2.DataSource = dt;
                        GridView2.DataBind();


                    }
                 
                }

                }



    • Editado danielglez lunes, 6 de enero de 2020 15:24
    lunes, 6 de enero de 2020 15:08

Respuestas

  • hola

    >>cuando necesito que muestre

    porque usas DataTable en lugar de List<> con un class con propiedades

    si usas clases y List podrias plicar linq para agrupar los datos y sumar los pesos

    Bueno en realidad con el DataTable tambien se puede, pero no es tan practico

    [Linq] DataSet – Agrupar y totalizar

    usa el

    DataTableExtensions.CopyToDataTable()

    para obtener nuevamente el datatable como respuesta

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 6 de enero de 2020 15:26
  • hola

    >>cada vez que filtro la informacion del gridview1 para seleccionar otro residuo la informacion del gridview 2 se actualiza borrando lo anterior

    Si asignas el DataSource del grid cambias los datos por eso la seleccion se pierde, porque los datos que lista son diferentes

    Para mentener la seleccion quizas debas conservalos en otro medio, como ser la Session

    [ASP.NET] Mantener información al cambiar de pagina

    algo como lo que explico en el articulo pero en tu caso cuando presionas el boton del filtro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 6 de enero de 2020 15:31
  • hola

    >>como era que se hacia para llenar el datable DATOS()

    no se a que haces referencia

    si ejecutas un SELECT se supone que uses el SqlDataAdapter

    >>por que yo llenaba un datable en el boton de seleccionar, pero no se mandarlo a llamar en el boton seleccionar y llenarlo

    no entendi

    si lo llenabas con el boton seleccionar como puede ser que no sabes como llamarlo, sino lo llamas como hacias para cargar el dt en un inicio

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta danielglez martes, 7 de enero de 2020 18:34
    lunes, 6 de enero de 2020 18:07

Todas las respuestas

  • hola

    >>cuando necesito que muestre

    porque usas DataTable en lugar de List<> con un class con propiedades

    si usas clases y List podrias plicar linq para agrupar los datos y sumar los pesos

    Bueno en realidad con el DataTable tambien se puede, pero no es tan practico

    [Linq] DataSet – Agrupar y totalizar

    usa el

    DataTableExtensions.CopyToDataTable()

    para obtener nuevamente el datatable como respuesta

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 6 de enero de 2020 15:26
  • hola

    >>cada vez que filtro la informacion del gridview1 para seleccionar otro residuo la informacion del gridview 2 se actualiza borrando lo anterior

    Si asignas el DataSource del grid cambias los datos por eso la seleccion se pierde, porque los datos que lista son diferentes

    Para mentener la seleccion quizas debas conservalos en otro medio, como ser la Session

    [ASP.NET] Mantener información al cambiar de pagina

    algo como lo que explico en el articulo pero en tu caso cuando presionas el boton del filtro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 6 de enero de 2020 15:31
  • como era que se hacia para llenar el datable DATOS(), por que yo llenaba un datable en el boton de seleccionar, pero no se mandarlo a llamar en el boton seleccionar y llenarlo 

    lunes, 6 de enero de 2020 16:03
  • hola

    >>como era que se hacia para llenar el datable DATOS()

    no se a que haces referencia

    si ejecutas un SELECT se supone que uses el SqlDataAdapter

    >>por que yo llenaba un datable en el boton de seleccionar, pero no se mandarlo a llamar en el boton seleccionar y llenarlo

    no entendi

    si lo llenabas con el boton seleccionar como puede ser que no sabes como llamarlo, sino lo llamas como hacias para cargar el dt en un inicio

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta danielglez martes, 7 de enero de 2020 18:34
    lunes, 6 de enero de 2020 18:07
  • ya tengo eso, ahora tengo una pregunta con eso, quiero tomar exactamente el mismo valor de la tabla datos por ejemplo

    row2["Documento"] = item.Key; aqui se organiza de acuerdo con el nombre no?
            row2["CantRegistros"] = item.Count(); aqui cuenta las que son iguales

            row2["Total"] = item.Sum<DataRow>(x => Convert.ToInt32(x["Total"])); y aqui suma las cantidades

    pero cual puede servir para tomar el mismo valor, sin necesidad de sumar o contar solo que tome el valor

    martes, 7 de enero de 2020 18:28