.cs 
private void DelButton_Click(object sender, System.EventArgs e) 

int delid; 
for(int i=0;i <this.dgNews.Items.Count;i++) 

CheckBox cbx = (CheckBox)this.dgNews.Items[i].FindControl("cbxid"); 
if(cbx.Checked=true) 

delid =Convert.ToInt32(dgNews.DataKeys[i]); 
string sql = "delete from news where id = "+delid+""; 
OleDbConnection conn=db.createConnection(); 
conn.Open(); 
OleDbCommand cmd = new OleDbCommand(sql,conn); 
cmd.ExecuteNonQuery(); 

    } 
}改成:if(cbx.Checked[color=#0000FF]==true)[/color] 

解决方案 »

  1.   

    按你们说的改过了 还是不行啊 这样是不管怎么选一个值都获取不到
    是不是我绑定的时候出了问题?
    代码
    DataSet  MyDataSet   =   new  DataSet();
    MyDataAdapter.Fill(MyDataSet,"news");  
    dgNews.DataSource   =  MyDataSet.Tables["news"].DefaultView;
    dgNews.DataKeyField = "id";
    dgNews.DataBind(); 
      

  2.   

    if(cbx.Checked=true) 改成if(cbx.Checked) 
      

  3.   

    if(cbx.Checked) 和 if(cbx.Checked==true) 
    我都试过了 不行 不管怎么选都取不到值
    if(cbx.Checked=true) 是不管怎么选所有ID都过去了.
    帮偶想想办法吧 我晕了
      

  4.   

    if(cbx.Checked) 和 if(cbx.Checked==true) 
    我都试过了 不行 不管怎么选都取不到值
    if(cbx.Checked=true) 是不管怎么选都取所有的ID
      

  5.   

    delid =Convert.ToInt32(dgNews.DataKeys[i]); 在代码中没有看到你给datagrid给Key了哦。。
      

  6.   

    绑定代码有没有放在
    if(!IsPostBack)
    {
        //绑定dgNews
    }
      

  7.   

    是不是我绑定的时候出了问题? 
    代码 
    DataSet  MyDataSet  =  new  DataSet(); 
    MyDataAdapter.Fill(MyDataSet,"news");  
    dgNews.DataSource  =  MyDataSet.Tables["news"].DefaultView; 
    dgNews.DataKeyField = "id"; 
    dgNews.DataBind(); 
      

  8.   

      protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
            {
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                    if (CheckBox2.Checked == true)
                    {
                        cbox.Checked = true;
                    }
                    else
                    {
                        cbox.Checked = false;
                    }
                }
            }
     protected void Button2_Click(object sender, EventArgs e)
            {
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                    if (cbox.Checked == true)
                    {
                        string sqlstr = "delete from news where id ='" + GridView1.DataKeys[i].Value + "'";
                        DbHelperSQL.ExecuteSql(sqlstr);
                    }
                }
     
            }///////////////////////////////
    DataSet  MyDataSet  =  new  DataSet(); 
    MyDataAdapter.Fill(MyDataSet,"news");  
    dgNews.DataSource  =  MyDataSet.Tables["news"].DefaultView; 
    dgNews.DataKeyField = "id"; 
    dgNews.DataBind(); 
    改为:
               DataSet ds= new  DataSet(); 
                this.GridView1.DataSource =ds;
                GridView1.DataKeyNames=new string [] {"id"};
                this.GridView1.DataBind();
                ds.Dispose();
                ds.Clear();
      

  9.   

    .aspx 
    <asp:datagrid id="dgNews" Width="100%" Runat="server" showheader="false" AutoGenerateColumns="False"> 
    中加上DataKeyField="id" 
      

  10.   

    if(cbx.Checked=true) 永远是正确的表达式,所以全部删除
      

  11.   

    .cs 
    private void DelButton_Click(object sender, System.EventArgs e) 

    string delids=Request.Form[cbxId.ClientID]; 
    try{
    string sql = "delete from news where id in( "+delids+")"; 
    OleDbConnection conn=db.createConnection(); 
    conn.Open(); 
    OleDbCommand cmd = new OleDbCommand(sql,conn); 
    cmd.ExecuteNonQuery();
    conn.Close(); 

    catch{}
    }
    这样应该可以
      

  12.   

    你的DataGrid好像沒有設置datakey
      

  13.   

    我的大哥们啊。。gridview里面哪里有item 属性啊。
      

  14.   

    +1
    if(cbx.Checked==true)  改成他试试....