代码之家  ›  专栏  ›  技术社区  ›  Jhorra

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

  •  10
  • Jhorra  · 技术社区  · 15 年前

    我有一个带有模板字段的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
            }
        }
    }
    

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

    3 回复  |  直到 15 年前
        1
  •  14
  •   Muhammad Akhtar    15 年前

    我认为你缺少的是,当你点击按钮,你的页面被发回,你重新绑定到gridview,你需要像这样绑定

     if (!Page.IsPostBack)
        {
            GridView1.DataSourceID = "yourDatasourceID";
            GridView1.DataBind();
        }
    
        2
  •  1
  •   Rich Wilson    14 年前

        3
  •  0
  •   Himanshu    12 年前

    设置复选框的autopostback属性

    AutoPostBack="true"