简体   繁体   中英

aspnet 2.0 GridView Get value CheckBox create dynamically

I created an asp page with a GridView with a text column and n columns with dynamic checkboxes.

<asp:GridView ID="gridAssetto" runat="server" Width="100%" GridLines="Vertical" SkinID="grdRegular" 
    EnableModelValidation="True" AllowPaging="false" 
    OnRowCommand="gridAssetto_RowCommand" OnRowDataBound="gridAssetto_RowDataBound" 
    OnDataBound="gridAssetto_DataBound">                    
</asp:GridView>

In.cs

protected void gridAssetto_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        for (int i = 1; i < numCol; i++)
        {

            CheckBox cb = new CheckBox();
            cb.ID = "cb_Aero" + e.Row.Cells[0].Text + "_Ane" + 
            gridAssetto.HeaderRow.Cells[i].Text;
            
            cb.EnableViewState = true;

            MutuallyExclusiveCheckBoxExtender cbExt = new MutuallyExclusiveCheckBoxExtender();
            cbExt.ID = "cbExt" + i;
            cbExt.TargetControlID = cb.ID;
            cbExt.EnableViewState = true;
            cbExt.Key = e.Row.RowIndex.ToString();
            e.Row.Cells[i].Controls.Add(cb);
            e.Row.Cells[i].Controls.Add(cbExt);
        } 

I take the data from the database and set the checkboxes correctly with the method

foreach (GridViewRow row in gridAssetto.Rows)
{
     CheckBox chk = (CheckBox)row.FindControl(cbID);

     if (chk != null)
       chk.Checked = true;
}

when instead I want to store the information on the database I have to read the checkboxes modified by the user, at click button the FindControl method does not work, as if the checkboxes in the grid were no longer there

foreach (GridViewRow row in gridAssetto.Rows)
{
    for (int xx = 1; xx < row.Cells.Count; xx++)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            string idcell = row.Cells[xx].ID;

            CheckBox chk = (CheckBox)row.Cells[xx].FindControl(cbID);

            if (chk != null)
            {
                if (chk.Checked)
                {
                    my code ...
                }
            }
        }
    }
}

the chk is always null, In the page html, before clic button: I have this control:

<input id="ctl00_Contenitore_TabGestione_TabAssetto_gridAssetto_ctl05_cb_AeroG001769_Ane1128" type="checkbox" name="ctl00$Contenitore$TabGestione$TabAssetto$gridAssetto$ctl05$cb_AeroG001769_Ane1128">

but when i read the check in debug code, i have the value

row.Cells[xx].ID is null and

row.Cells[xx].UniqueID is

"ctl00$Contenitore$TabGestione$TabAssetto$gridAssetto$ctl03$ctl00"

Thanks

The problem is PostBack. Before postback I have the control checkbox, after click the button i lost control checkbox.

what is the solution to the problem?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM