buongiorno, ho un problemino.
io estraggo dei dati da un file txt e li carico in una gridview. nell'header di questa, aggiungo per ogni cella una checkbox. il problema è che ad ogni postback le checkbox scompaiono e non riesco a farle rimanere e quindi a sapere quali siano checkati e quali no.

questo è il codice che ho utilizzato:

aspx.cs
codice:
public partial class data : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
        
    }

    protected void btUploadData_Click(object sender, EventArgs e)
    {
        string filePath = Request.PhysicalApplicationPath;
        filePath += "FileCaricati/";

        openFileSelected(filePath);
    }
    protected void openFileSelected(string nomeFile)
    {
        
        string file_path = "FileCaricati/anagrafiche_2.txt"; /* percorso relativo del file*/
        char[] tokens = new char[1] { char.Parse(";") };
        DataTable dt = new DataTable("GridView1");

        System.Collections.Generic.List<string> _rows = new System.Collections.Generic.List<string>();
        using (System.IO.StreamReader rd = new System.IO.StreamReader(Server.MapPath(file_path)))
        {
            while (!rd.EndOfStream)
            {
                _rows.Add(rd.ReadLine());
            }

            rd.Close();
        }

        string[] _columns = _rows[0].Split(tokens);
        int i;
        for (i = 0; i < _columns.Length; i++)
        {
_columns[i] = _columns[i]  ; 
            dt.Columns.Add(new DataColumn(_columns[i]));

        }
        

        for (i = 1; i < _rows.Count; i++)
        {
            DataRow rw = dt.NewRow();           
            string[] _cells = _rows[i].Split(tokens);
            
            if (_cells.Length > _columns.Length)
            {
                throw new Exception("Numero celle maggiore delle colonne alla riga " + i.ToString());
            }

            int j;
            for (j = 0; j < _cells.Length; j++)
            {
                rw[j] = _cells[j];                
            }
            dt.Rows.Add(rw);        
        }

        


        this.GridView1.DataSource = dt;
        this.GridView1.DataBind();

        for (int k = 0; k < 4; k++)
        {
            CheckBox nameCb = new CheckBox();
            nameCb.EnableViewState = true;
            nameCb.Text = GridView1.HeaderRow.Cells[k].Text;
            nameCb.ID = "nameCb" + k.ToString();
            GridView1.HeaderRow.Cells[k].Controls.Add(nameCb);

        }

        string MyGridView = GridView1.ToString();
        
    }

}
aspx
codice:
<asp:Button ID="Button1" runat="server" Text="Button" />
        <asp:Button ID="btUploadData" runat="server" Text="Conferma" OnClick="btUploadData_Click"  />
        <asp:GridView ID="GridView1" AutoGenerateColumns="true" runat="server">
            <Columns></Columns>
        </asp:GridView>
grazie mille