Флажок в TemplateField в Gridview теряет проверку на обратной стороне

У меня есть gridview с полем шаблона. В этом поле шаблона установлен флажок. У меня есть кнопка отправки вне gridview, чтобы назначить проверенные записи. При обратной проверке флажки не регистрируются как проверяемые. Вот мой код:

<Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="cb" Checked="false" runat="server" />
                        <asp:Label ID="lblCFID" runat="server" Visible="false" Text='<%# Eval("ID") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField HeaderStyle-HorizontalAlign="Center" DataField="Name" HeaderText="Name" />
                <asp:BoundField HeaderStyle-HorizontalAlign="Center" DataField="DOB" HeaderText="Date of Birth" />
                <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Gender" DataField="Gender"  />
                <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Status" DataField="Status"  />
                <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Plan Name" DataField="PlanName"  />
                <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Type" DataField="ControlType"  />
                <asp:BoundField HeaderStyle-HorizontalAlign="Center" HeaderText="Date of Service" dataformatstring="{0:MMMM d, yyyy}" htmlencode="false" DataField="DateofService"  />
            </Columns>

protected void AssignRecords(object sender, EventArgs e)
{
    int Rows = gvASH.Rows.Count;
    for (int i = 0; i < Rows; i++)
    {
        //CheckBoxField cb = ((CheckBoxField)gvASH.Rows[i].Cells[1]).;
        CheckBox cb = (CheckBox)gvASH.Rows[i].Cells[0].FindControl("cb");
        Label lblID = (Label)gvASH.Rows[i].Cells[0].FindControl("lblCFID");
        if (cb.Checked == true)
        {

            string ID = lblID.Text;
            //Assign Code
        }
    }
}

У меня есть точка останова на строке ID = lblID.Text; но он никогда не находит проверенных.

Ответ 1

Я думаю, что вам не хватает, когда вы нажимаете на кнопку, а ваша страница - обратно, вы перевязываете gridview, вам нужно связать в этом состоянии, например

 if (!Page.IsPostBack)
    {
        GridView1.DataSourceID = "yourDatasourceID";
        GridView1.DataBind();
    }

Ответ 2

В обратном порядке содержимое GridView воссоздается из данных Postback Viewstate между page_init и page_load. Возможно, попробуйте изучить свой Gridview в page_load, чтобы увидеть, что там.

Ответ 3

установить атрибут автоповтора флажка

AutoPostBack="true"