Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/11/2008, 08:40
ylondono
 
Fecha de Ingreso: noviembre-2008
Mensajes: 11
Antigüedad: 16 años, 4 meses
Puntos: 0
Eventos CheckBox en GridView

Hola a todos

El motivo del presente es un problema que tengo al tratar de identificar cuáles CheckBoxs han sido seleccionados por el usuario en un GridView.

La estructura de mi GridView es la siguiente:

Código:
<asp:GridView ID="grvDatos" runat="server" BackColor="White" BorderColor="#B1BAE0"
    BorderStyle="Solid" BorderWidth="1px" CellPadding="4" ForeColor="Black" 
    GridLines="Vertical" Font-Bold="False" AutoGenerateColumns="False" 
    ondatabound="grvDatos_DataBound" >
    <FooterStyle CssClass="pie_tabla" />
    <RowStyle CssClass="registro_resaltado" />
    <EditRowStyle CssClass="registro_edicion" />
    <SelectedRowStyle CssClass="registro_seleccionado" />
    <Columns>
        <asp:BoundField DataField="Código" DataFormatString="" HeaderText="Código" />
        <asp:BoundField DataField="Nombre" DataFormatString="" HeaderText="Página" />
        <asp:TemplateField HeaderText="Registrar">
            <ItemTemplate>
                <asp:CheckBox ID="chkRegistrar" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Listar">
            <ItemTemplate>
                <asp:CheckBox ID="chkListar" name="chkListar" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Modificar">
            <ItemTemplate>
                <asp:CheckBox ID="chkModificar" name="chkModificar" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Eliminar">
            <ItemTemplate>
                <asp:CheckBox ID="chkEliminar" name="chkEliminar" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Cód">
            <ItemTemplate>
                <asp:Label ID="lblCodigo" runat="server" Text="" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <PagerStyle CssClass="pie_tabla" HorizontalAlign="Center" />
    <HeaderStyle CssClass="titulo_tabla" />
    <AlternatingRowStyle CssClass="registro_normal" />
</asp:GridView>
Tengo un evento click en un botón llamado cmdAccion con el que pretendo evaluar cuáles CheckBox fueron seleccionados por el usuario.

El código que tengo en el evento del botón es el siguiente:

Código:
protected void cmdAccion_Click(object sender, EventArgs e)
    {
        bool regib = false;
        bool listb = false;
        bool modib = false;
        bool elimb = false;
        
        foreach (GridViewRow row in grvDatos.Rows)
        {
            codigoPagina = int.Parse(row.Cells[0].Text);

            regib = ((CheckBox)row.FindControl("chkRegistrar")).Checked;
            listb = ((CheckBox)row.FindControl("chkListar")).Checked;
            modib = ((CheckBox)row.FindControl("chkModificar")).Checked;
            elimb = ((CheckBox)row.FindControl("chkEliminar")).Checked;

            string registrar = "0";
            string listar = "0";
            string modificar = "0";
            string eliminar = "0";

            if (regib)
                registrar = "1";
            if (listb)
                listar = "1";
            if (modib)
                modificar = "1";
            if (elimb)
                eliminar = "1";
        }
    }
Resulta que a pesar de tener seleccionados varios CheckBox, al presionar el botón cmdAccion y evaluar cada uno de los registros del GridView, en ningún momento los CheckBox aparecen como seleccionados.

Si alguien me puede ayudar explicándome qué parte del proceso he hecho de forma incorrecta le estaría inmensamente agradecido.

De antemano muchas gracias por la colaboración prestada.