GridView里嵌套CheckBox,用以实现选中进行删除的操作。可是不管怎么弄,checked属性始终为false。求高人指点。代码如下:
前台代码:
  <asp:TemplateField HeaderText="删除">
  <ItemTemplate>
  <asp:CheckBox ID="CheckBox1" runat="server" />
  </ItemTemplate>
  </asp:TemplateField>后台代码:
注:Button2为删除按钮,单击,将通过复选框选中的行进行删除
    protected void button2_Click(object sender, EventArgs e)
    {
        int flag = 0;
        PE.BLL.QuestionnaireOperationBLL questionnaireOpertionBLL = new PE.BLL.QuestionnaireOperationBLL();
        int questionnaireId = 0;
        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (cbox.Checked == true)
            {
                questionnaireId = Convert.ToInt32(GridView1.Rows[i].Cells[1].Text);
                questionnaireOpertionBLL.DeleteQuestionnaire(questionnaireId);
                flag = flag + 1;
            }
        }
        Response.Write(flag.ToString());
    } 

解决方案 »

  1.   

    参考
    http://dotnet.aspx.cc/article/a8efc285-f0b1-4f8f-8e73-2b7d8724a47c/read.aspx
      

  2.   

                for (int i = 0; i < GridView1.Rows.Count; i++)
                {
                    if (GridView1.Rows[i].RowType == DataControlRowType.DataRow)
                    {
                        CheckBox ck = GridView1.Rows[i].FindControl("ckID") as CheckBox;
                        if (ck.Checked)
                        {
                            //业务操作
                        }
                    }
                }
      

  3.   

                for (int i = 0; i < GridView1.Rows.Count; i++)
                {
                    if (GridView1.Rows[i].RowType == DataControlRowType.DataRow)
                    {
                        CheckBox ck = GridView1.Rows[i].FindControl("CheckBox1") as CheckBox;
                        if (ck.Checked)
                        {
                            //业务操作
                           }
                        }
                    }
                }
      

  4.   

    楼主用强转既然成功,那用as也没有必要的。从代码看一点问题都没有,是不是楼主还有其他什么操作在 Page_Load的时候,楼主把core代码加到一个新页面里看看,问题还存不存在。
      

  5.   

     for (int i = 0; i < this.GridView1.Rows.Count; i++)
            {
                bool ischeck = (GridView1.Rows[i].FindControl("CheckBox1") as CheckBox).Checked;
                string id = (GridView1.DataKeys[GridView1.Rows[i].DataItemIndex].Value).ToString();
                if (ischeck)
                {
                    Business.Library.ProductResBL.Delete(id);
                }        }
    //这是我的你的这句:questionnaireId = Convert.ToInt32(GridView1.Rows[i].Cells[1].Text); 
    是不是应该放到外面去 
      

  6.   

    把Page_Load里的代码贴出来看看
      

  7.   

    是否加if(!IsPostBack)
    {
    //绑定数据
    }