|
#1 -
03/12/2009 10:27:59
|
Reporta abuso
|
Link Permanente
|
|
Gridview con chekbox y evento checkedchanged
|
|
|
|
|
|
Buenas,
Tengo un gridView con un checkbox en cada fila, con la idea de ir marcando y con el evento del onchange, realiza una actualización en la base de datos de 0 ó 1 dependiendo si se marca o desmarca. El problema es que cuando se lanza el evento CheckedChanged, se realiza tantas veces como checkbox marcados, pero si desmarcas un checkbox que anteriormente habías marcado (supongamos que te equivocas y lquieres desmarcarlo), lo ignora y no realiza la actualización correspondiente en la BBDD aunque visualmente no aparece marcado. ¿Alguna otra idea para realizar la pantalla o solucionar el problema?
Muchas gracias,
Miores
|
|
|
|
|
|
#2 -
04/12/2009 17:27:31
|
Reporta abuso
|
Link Permanente
|
|
RE: Gridview con chekbox y evento checkedchanged
|
|
|
buenas:
Finalmente he solucionado el problema. Dado que una vez que se lanzaba el evento del checkedchanged, no detectaba volver a cambiar al estado, utilizo dos checkbox que cargo en el DataBound de gridview, visible marcado o visible sin marcar. De este modo, se ejecutan dos eventos distintos para poder realizar siempre la actualización.
Saludos,
|
|
|
|
|
|
|
#3 -
03/12/2009 17:54:27
|
Reporta abuso
|
Link Permanente
|
|
RE: Gridview con chekbox y evento checkedchanged
|
|
|
Un ejemplo del codigo, utilizo Master y el UpdatePanel, versión Framework 2.0
<asp:UpdatePanel ID="uppagina" runat="server" UpdateMode="Always"><ContentTemplate> <div> <asp:Label ID="centro" Text="texto" runat="server" /> <asp:Panel ID="pan" runat="server" Height="700px" > <asp:GridView Width="98%" ID="gvBuscarReglas" runat="server" CaptionAlign="Left" CellPadding="0" HorizontalAlign="Left" AutoGenerateColumns="False" DataKeyNames="nasiento" EnableViewState="False" BorderStyle="None" BorderWidth="1px" OnPageIndexChanging ="gvBuscarReglas_PageIndexChanging" > <PagerSettings Mode="NextPreviousFirstLast" /> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="c_ncontacto" Checked='<%# Bind("mod347") %>' runat="server" AutoPostBack="true" OnCheckedChanged="chkApunte_CheckedChanged"/> <asp:HiddenField ID="hfCodigo" runat="server" Value='<%# Eval("nasiento") %>' /> <asp:HiddenField ID="hfApunte" runat="server" Value='<%# Eval("apunte") %>' /> </ItemTemplate> <HeaderStyle HorizontalAlign="Center" CssClass="CELDA" /> <ItemStyle CssClass="CELDA" Width="30px" HorizontalAlign="Center" /> <ControlStyle Width="30px" /> </asp:TemplateField> <asp:TemplateField HeaderText="Codigo"> <ItemTemplate> <a href="" >0800002</a> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </asp:Panel> </div> </ContentTemplate> </asp:UpdatePanel> </asp:Content>
protected void chkApunte_CheckedChanged(object sender, EventArgs e) { CheckBox dd = (CheckBox)sender; GridViewRow objFila = (GridViewRow)dd.Parent.Parent; HiddenField Codigo = (HiddenField)objFila.FindControl("hfCodigo"); HiddenField Apunte = (HiddenField)objFila.FindControl("hfApunte"); bool valor = dd.Checked; if (valor) centro.Text= "Marcado: " + objFila.RowIndex.ToString(); else centro.Text= "No marcado " + objFila.RowIndex.ToString();
}
He visto que probando en otro ejemplo, con dos gridview. si en el primero tengo un Radiobutton que al pulsar, en el evento Onchage me pinta el gridview anterior, el evento del CheckBox funciona correctamente, sólo se ejecuta para el row correspondiente y tanto si se marca como si se desmarca. He intentado modificar el EnableViewState=true, porque en este segundo ejemplo sí tiene sentido, pero da igual.
¿alguna sugerencia?
Gracias,
|
|
|
|
|