<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="id" HeaderText="id"></asp:BoundColumn>
</Columns>
</asp:DataGrid>int b = dataGridView1.Rows.Count; 
ArrayList al;
for (int i = 1; i < b; i++) 

CheckBox cb = DataGrid1.Items[i].Cells[0].FindControl("CheckBox1") as CheckBox;
if (cb.Checked) 
{
al.Add(DataGrid1.Items[i].Cells[1].Text);//记录id,方便构造insert语句
} } 

解决方案 »

  1.   

    i应该从0开始,再则如果dgv最后一行是空行的话,i < b 应是i < b-1
     for (int i = 0; i < b; i++)
                { 
                    if ((bool)dataGridView1.Rows[i].Cells[0].Value) 
                    x++; 
                } 
      

  2.   

    遍历GridView.Rows对象,然后检查IsChecked属性。
      

  3.   

     private void button3_Click(object sender, EventArgs e)        {            int b = dataGridView1.Rows.Count;
                int x = 0;
                for (int i = 0; i < b-1; i++)
                {
                    if ((bool)(dataGridView1.Rows [i].Cells [0].Value)) 这一句 提示未将对象应用到实例  (大体意思)
                    x = x + 1;            }
                MessageBox.Show(x.ToString ());
            }
    这样不对。
    提示未将对象应用到实例  (大体意思)
      

  4.   

    我的是 窗体的 不是 asp 的
      

  5.   

            protected void Button2_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < DataList1.Items.Count; i++)
                {
                    CheckBox cbSingle = (CheckBox)DataList1.Items[i].FindControl("CheckBoxSingle");
                    if (cbSingle.Checked == true)
                    {
                        string ID = DataList1.DataKeys[i].ToString();
                        Response.Write("<br />"+ID);
                    }
                }        }
      

  6.   

    int num=0;
    foreach(GridViewRow i in GridView1.SelectedRow)
    {
             num++;
    }