Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gridview中TemplateField中的复选框在回发时丢失选中状态_C#_Asp.net_Gridview_Checkbox_Postback - Fatal编程技术网

C# Gridview中TemplateField中的复选框在回发时丢失选中状态

C# Gridview中TemplateField中的复选框在回发时丢失选中状态,c#,asp.net,gridview,checkbox,postback,C#,Asp.net,Gridview,Checkbox,Postback,我有一个带有模板字段的gridview。该模板字段中有一个复选框。我在gridview外有一个submit按钮,用于分配已检查的记录。在回发上,没有复选框注册为正在选中。这是我的密码: <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="cb" Checked="

我有一个带有模板字段的gridview。该模板字段中有一个复选框。我在gridview外有一个submit按钮,用于分配已检查的记录。在回发上,没有复选框注册为正在选中。这是我的密码:

<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
        }
    }
}

受保护的无效分配记录(对象发送方、事件参数e)
{
int Rows=gvASH.Rows.Count;
对于(int i=0;i

我在字符串ID=lblID.Text上设置了一个断点;但它从未找到任何已检查的内容。

我认为您缺少的是,当您单击按钮并返回页面时,您需要重新绑定到gridview,您需要在这种情况下进行绑定,如

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

在回发中,GridView的内容是从page_init和page_load之间的回发Viewstate数据重新创建的。也许可以尝试在页面加载中检查Gridview,看看有什么内容。

设置复选框的autopostback属性

AutoPostBack="true" 

我使用的是C#,但是VB.net中asp.net网站上的这个例子基本上就是我正在做的:所以我知道这是可能的,我只是不知道为什么它对我不起作用。什么时候调用你的页面生命周期分配方法?在这里查看解决方案,你需要保留选择复选框你是对的,我刚刚在搜索方法上加了一个断点,它又被调用了。我得查一下电话是从哪里打来的。