我先做个批量删除GridView中CheckBox的Checked为true的记录.
数据的ID存在CheckBox.Text里.
怎样才能获取所有CheckBox的Checked为true的CheckBox.Text?

解决方案 »

  1.   

    HTML代码页面:添加 <input type="checkbox" id="rechkbox" runat="server" value='<%#DataBinder.Eval(Container.DataItem,"Id") %>' />CS代码页面的,取所有选中的checkbox
     foreach (GridViewRow i in this.gridView.Rows)
                {
                    HtmlInputCheckBox chkbox = i.FindControl("rechkbox") as HtmlInputCheckBox;
                    if (chkbox != null && chkbox.Checked)
                    {
             int reId = Convert.ToInt32(chkbox.Value); //取checkbox的value
             //其他的操作                }
                }
      

  2.   

    批量删除我的做法是加一个label来获得当前checkbox所在的行id
      

  3.   

    按楼上的方法,但我还是用的服务端空件.可是我总是得不到CheckBox的Checked==true状态?
    我明明就是已经打上钩了?
    代码如下 :
            string id=null;
            foreach (GridViewRow r in mainGridView.Rows)
            {
                CheckBox chk = (CheckBox)r.FindControl("articleID");
                if (chk.Checked==false)
                {
                    id += chk.Text + ",";
                }
            }
            return id;
      

  4.   

    我自己都顶了,还是没有人关注吗? 
    3楼的那段代码中if (chk.Checked==false)应该是if (chk.Checked==true)
    其实这里也无关紧要,还是总是得不到CheckBox的Checked==true状态?
      

  5.   

    我不是用findcontrol
    假如你的checkbox在gridview的第1列:
    for(int i=0;i<= this.gridview1.Rows.Count;i++)
    {
       if(((CheckBox)gridview1.Rows[i].Cells[0].Controls[1]).Checked == false)
       {
          //操作本行
       }
    }
    以上代码手打....可能个别字母写错,关键在于(CheckBox)gridview1.Rows[i].Cells[0].Controls[1]  就可以获得那个checkbox   如果你的checkbox不在第一列,修改Cells[0]即可,从0开始的索引.
      

  6.   

    Private Sub Delectbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Delectbutton.Click        Dim DataDelete As New modern
            Dim i As Integer
            For i = 0 To DataGrid1.Items.Count - 1
                Dim cb As CheckBox = DataGrid1.Items(i).FindControl("chkExport")
                If cb.Checked Then
                    Dim LabelId As Label = DataGrid1.Items(i).FindControl("label1")
                    Dim CheckId As Integer
                    CheckId = Convert.ToInt32(LabelId.Text)
                    DataDelete.DataDelete(CheckId)
                End If
            Next        CreateDataSource()    End Sub
      

  7.   

    以上是datagird的,你参考下思路。这里有个ASP.NET2.0下含有CheckBox的GridView删除选定记录实例http://www.knowsky.com/340036.html
      

  8.   

    我的CheckBox是在第1列,但是自定义模版?
      

  9.   

    这个问题还是没有解决,还是总是得不到CheckBox的Checked==true状态?
      

  10.   

    绑定放在
     if (!IsPostBack)
                {
                    getDate();
                    this.GridView1.DataBind();
                }然后
     string idStr = "";
                foreach (GridViewRow row in this.GridView1.Rows)
                {
                    if (((CheckBox)row.FindControl("chkExport")).Checked == true)
                    {
                        idStr += this.GridView1.DataKeys[row.RowIndex].Value + "<br>";
                    }
                }
                Response.Write(idStr);
               
      

  11.   

    同样的问题 总是获取不到CheckBox的Checked==true状态,继续关注,请高手速来搞定。
      

  12.   

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    this.GridView1.DataBind();
                }
            }