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<asp:Panel ID="selectpart" runat="server">
<asp:GridView ID="GridView1" SkinID="GV" runat="server" AutoGenerateColumns="False"
DataKeyNames="id_part" DataSourceID="ODS"
style="margin-top: 0px" Visible="True" AllowPaging="True" >
<Columns>
<asp:TemplateField HeaderText="Select" SortExpression="Selected2">
<ItemTemplate>
<asp:CheckBox ID="checkbox2" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="OPTcase" HeaderText="OPTcase" InsertVisible="False" ReadOnly="True" SortExpression="OPTcase" />
<asp:BoundField DataField="pn" HeaderText="Part Number" InsertVisible="False" ReadOnly="True" SortExpression="pn" />
<asp:BoundField DataField="rma" HeaderText="RMA" SortExpression="rma" />
<asp:TemplateField HeaderText="Status" SortExpression="status">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("status") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:DropDownList ID="DDL_status" runat="server" style="margin-bottom: 0px"
Width="128px">
<asp:ListItem Value=""> </asp:ListItem>
<asp:ListItem Value="DOA">DOA</asp:ListItem>
<asp:ListItem Value="NEW">NEW</asp:ListItem>
<asp:ListItem Value="USED">USED</asp:ListItem>
<asp:ListItem Value="WS/WPIB">WS/WPIB</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="qty" HeaderText="Qty" SortExpression="qty"/>
<asp:BoundField DataField="dir_cliente" HeaderText="Address Customer" InsertVisible="False" ReadOnly="True" SortExpression="dir_cliente" />
<asp:BoundField DataField="loaded_type" HeaderText="Loaded Type" SortExpression="loaded_type"/>
</Columns>
</asp:GridView>
<asp:Button ID="Button3" runat="server" onclick="Button3_Click" CssClass="normalButton"
Text="Select and confirm" />
</asp:Panel>
Parte del Servidor:
Código C#:
Ver originalprotected void Button3_Click(object sender, EventArgs e)
{
//create packing list and update part(piki and status)
PLsBLL plinsertar = new PLsBLL();
PLTO pl = new PLTO();
pl.id_trans = Convert.ToInt32(Session["id_trans"]);
pl.date_generated = DateTime.Now;
pl.status = "Open";
pl.user = Convert.ToInt32(Session["id_user"]);
plinsertar.insertPl(pl);
PLsBLL pl2 = new PLsBLL();
int id_pl_aux = Convert.ToInt32(pl2.getmaxpl().Rows[0]["id_pl2"]);
Session["id_pl"] = id_pl_aux;
lbl_no_address2.Text = "GridView1 rows = " + GridView1.Rows.Count;
lbl_no_address2.Visible = true;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
bool isChecked2 = ((CheckBox)row.FindControl("checkbox2")).Checked;
CheckBox check = ((CheckBox)row.FindControl("checkbox2"));
if (check.Checked == true)
{
//Session["parts"][i] = GridView1.Rows[i].Cells[2].Text;
int id = (int)GridView1.DataKeys[i].Value;
lbl_id_pl.Text = "Entra en actualizar piki y status para el id: " + id;
lbl_id_pl.Visible = true;
VOLATILBLL volatil = new VOLATILBLL();
volatil.getupdatepiki(1, id);
volatil.getupdatestatus(DDL_status.Text, id);
}
else
{
int id2 = (int)GridView1.DataKeys[i].Value;
lbl_no_address.Text = "Entra en actualizar piki a 0 para el id2: " + id2;
lbl_no_address.Visible = true;
VOLATILBLL volatil2 = new VOLATILBLL();
volatil2.getupdatepiki(0, id2);
}
}
//Response.Redirect("resumenpl.aspx");
}
Siento los labels ya que los utilizo para ver que todo va saliendo bien.
Un saludo y muchas gracias por su ayuda.