Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/08/2013, 04:47
taboacar
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Recoger multiples filas mediante checkbox

Buenas de nuevo,

He mirado lo que mas has comentado y todo viene bien explicado para el visual studio.
En mi caso no utilizo esa herramienta y lo hago todo a mano por lo que me gustaría hacerlo como lo tengo hasta ahora.

Lo que me extraña es que tengo otro gridview con otro checkbox en la misma pagina y en este caso me funciona correctamente. El segundo gridview esta copiado y pegado del anterior pero en este caso no cambia el checked a true cuando lo seleccionas.

También he mirado con el autopostback a true y el OnCheckedChanged a una función que me cambie el checked a true de la fila seleccionada. Pero esto ultimo ha sido imposible ya que desconozco como cambiar el estado del checked de esa fila en concreto(la llamada a esa fila del gridview).

A alguien se le ocurre como puedo hacer para que el checked de la fila cambie?

Muchas gracias por su ayuda.

Les dejo el nuevo código de la pagina.

Código ASP:
Ver original
  1. <asp:Panel ID="selectpart" runat="server">
  2.   <asp:GridView ID="GridView1" SkinID="GV" runat="server" AutoGenerateColumns="False"
  3.         DataKeyNames="id_part" DataSourceID="ODS"  
  4.         style="margin-top: 0px" Visible="True" AllowPaging="True" >      
  5.         <Columns>
  6.         <asp:TemplateField HeaderText="Select" SortExpression="Selected2">
  7.           <ItemTemplate>
  8.             <asp:CheckBox ID="checkbox2" runat="server"/>
  9.           </ItemTemplate>
  10.         </asp:TemplateField>
  11.         <asp:BoundField DataField="OPTcase" HeaderText="OPTcase" InsertVisible="False" ReadOnly="True" SortExpression="OPTcase" />
  12.           <asp:BoundField DataField="pn" HeaderText="Part Number" InsertVisible="False" ReadOnly="True" SortExpression="pn" />
  13.           <asp:BoundField DataField="rma" HeaderText="RMA" SortExpression="rma" />
  14.           <asp:TemplateField HeaderText="Status" SortExpression="status">
  15.                         <EditItemTemplate>
  16.                             <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("status") %>'></asp:TextBox>
  17.                         </EditItemTemplate>
  18.                         <ItemTemplate>
  19.                             <asp:DropDownList ID="DDL_status" runat="server" style="margin-bottom: 0px"
  20.                             Width="128px">
  21.                             <asp:ListItem Value=""> </asp:ListItem>
  22.                             <asp:ListItem Value="DOA">DOA</asp:ListItem>
  23.                             <asp:ListItem Value="NEW">NEW</asp:ListItem>
  24.                             <asp:ListItem Value="USED">USED</asp:ListItem>
  25.                             <asp:ListItem Value="WS/WPIB">WS/WPIB</asp:ListItem>
  26.                         </asp:DropDownList>
  27.                         </ItemTemplate>
  28.                     </asp:TemplateField>
  29.           <asp:BoundField DataField="qty" HeaderText="Qty" SortExpression="qty"/>
  30.           <asp:BoundField DataField="dir_cliente" HeaderText="Address Customer" InsertVisible="False" ReadOnly="True" SortExpression="dir_cliente" />
  31.           <asp:BoundField DataField="loaded_type" HeaderText="Loaded Type" SortExpression="loaded_type"/>
  32.         </Columns>
  33.     </asp:GridView>
  34.     <asp:Button ID="Button3" runat="server" onclick="Button3_Click" CssClass="normalButton"
  35.                             Text="Select and confirm" />
  36.     </asp:Panel>

Parte del Servidor:

Código C#:
Ver original
  1. protected void Button3_Click(object sender, EventArgs e)
  2.     {
  3.         //create packing list and update part(piki and status)
  4.         PLsBLL plinsertar = new PLsBLL();
  5.         PLTO pl = new PLTO();
  6.  
  7.         pl.id_trans = Convert.ToInt32(Session["id_trans"]);
  8.         pl.date_generated = DateTime.Now;
  9.         pl.status = "Open";
  10.         pl.user = Convert.ToInt32(Session["id_user"]);
  11.         plinsertar.insertPl(pl);
  12.  
  13.         PLsBLL pl2 = new PLsBLL();
  14.  
  15.         int id_pl_aux = Convert.ToInt32(pl2.getmaxpl().Rows[0]["id_pl2"]);
  16.         Session["id_pl"] = id_pl_aux;
  17.         lbl_no_address2.Text = "GridView1 rows = " + GridView1.Rows.Count;
  18.         lbl_no_address2.Visible = true;
  19.        
  20.         for (int i = 0; i < GridView1.Rows.Count; i++)
  21.         {
  22.             GridViewRow row = GridView1.Rows[i];
  23.             bool isChecked2 = ((CheckBox)row.FindControl("checkbox2")).Checked;
  24.             CheckBox check = ((CheckBox)row.FindControl("checkbox2"));
  25.             if (check.Checked == true)
  26.             {
  27.                 //Session["parts"][i] = GridView1.Rows[i].Cells[2].Text;
  28.                 int id = (int)GridView1.DataKeys[i].Value;
  29.                 lbl_id_pl.Text = "Entra en actualizar piki y status para el id: " + id;
  30.                 lbl_id_pl.Visible = true;
  31.  
  32.                 VOLATILBLL volatil = new VOLATILBLL();
  33.  
  34.                 volatil.getupdatepiki(1, id);
  35.                 volatil.getupdatestatus(DDL_status.Text, id);
  36.             }
  37.             else
  38.             {
  39.                 int id2 = (int)GridView1.DataKeys[i].Value;
  40.                 lbl_no_address.Text = "Entra en actualizar piki a 0 para el id2: " + id2;
  41.                 lbl_no_address.Visible = true;
  42.  
  43.                 VOLATILBLL volatil2 = new VOLATILBLL();
  44.  
  45.                 volatil2.getupdatepiki(0, id2);
  46.             }
  47.         }
  48.         //Response.Redirect("resumenpl.aspx");
  49.  
  50.     }

Siento los labels ya que los utilizo para ver que todo va saliendo bien.
Un saludo y muchas gracias por su ayuda.