Gridview中的TemplateField中的复选框在回发时丢失
我有一个带有模板字段的gridview。 在该模板字段中是一个复选框。 我在gridview之外有一个提交按钮来分配已检查的记录。 在回发时没有复选框注册为正在检查。 这是我的代码:
<asp:Label ID="lblCFID" runat="server" Visible="false" Text='' /> 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上设置断点; 但它永远不会发现任何被检查的东西。
我认为你缺少的是,当你点击按钮并且你的页面是回发时,你重新绑定到gridview,你需要在这种情况下绑定
if (!Page.IsPostBack) { GridView1.DataSourceID = "yourDatasourceID"; GridView1.DataBind(); }
在回发上,GridView的内容是从page_init和page_load之间的回发Viewstate数据重新创建的。 也许尝试在page_load中检查你的Gridview,看看有什么。
设置Checkbox的autopostback属性
AutoPostBack="true"