private void tsbDelete_Click(object sender, EventArgs e)
        {
            if (this.dataGridView1.SelectedRows.Count == 1)
            {
                int delid = 0;
                if (MessageBox.Show("确认要删除这条记录吗?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    if (this.dataGridView1.SelectedRows.Count > 0)
                    {
                        delid = int.Parse(this.dataGridView1.SelectedRows[0].Cells["Column7"].Value.ToString());
                        userManage.DelUser(delid);
                        dgvBind();
                    }
                }
            }
            else
            {
                ArrayList li = new ArrayList();                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    if (dataGridView1.SelectedRows[i].Selected == true)
                    {
                        li.Add(dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString());                    }
                    userManage.DelSelectedUser(li);
                }
            }   
        }
我想知道userManage.DelSelectedUser(li);这个方法是怎么写的。请根据userManage.DelUser(delid);这个方法我是这么写的:
        public int DelUser(int delid)
        {
            int rows = 0;
            using (SqlConnection myconn = new SqlConnection(stringconn))
            {
                SqlCommand mycomm = new SqlCommand("delete from files where id=@id", myconn);
                mycomm.Parameters.Add(new SqlParameter("@id", SqlDbType.Int)).Value = delid;
                myconn.Open();
                rows = mycomm.ExecuteNonQuery();
                myconn.Close();
            }
            return rows;
        }

解决方案 »

  1.   

    楼主是想在datagridview里,点击删除,删除用户的所有信息?
      

  2.   

    在datagridview的CellClick事件里删除啊
    获取对象主键,再删除
      

  3.   

    想用JS实现还是想用SQL语句实现?
      

  4.   

    还是没明白楼主说的意思
    你一个datagridview的列表,里面有复选框选择,你按了Ctrl建就删除你所选择的数据?
      

  5.   

    我写了删除一条的方法userManage.DelUser(delid);
    就是根据这种方法,写一个userManage.DelSelectedUser(li);
      

  6.   

    这些只是我代码中的一部分~我做的就是跟SQL数据库连接的一个datagridview表,如果选中一行,然后点击删除按钮就删除一行(这个我已经实现了),如果选中多行,点击删除按钮就删除多行(我就是想要这个方法的代码!)  需要所有代码吗?不好意思我是个新手~
      

  7.   

    获取所选行的id,循环id进行删除。
    foreach (DataGridItem dele in this.dgInfo.Items)
            {
                CheckBox cb = (CheckBox)dele.FindControl("ckAll");
                if (cb.Checked)
                {
                    int ckID = Convert.ToInt32(this.dgInfo.DataKeys[dele.ItemIndex]);//获取每行Id
                   delno =  this.dbc.ExecuteSql("delete from " + col + " Where infoid=" + ckID.ToString());
                    if (this.dgInfo.CurrentPageIndex > 0 && this.dgInfo.Items.Count == 1) this.dgInfo.CurrentPageIndex--;            }
            }
      

  8.   

    可以把代码写出来吗?你的意思我懂,但是就是写不出来代码...
    可以根据userManage.DelUser(delid);这个方法写,多谢。
      

  9.   

    既然你单条数据都可以删除了.那多条数据也可以在这个基础上删除了.
    for (int i = 0; i < dataGridView1.RowCount; i++)
      {
      if (dataGridView1.SelectedRows[i].Selected == true)
      {
      li.Add(dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString());
    userManage.DelUser(dataGridView1.SelectedRows[i].Cells["ID列"].Value.ToString());
      }
      }
    不过这样效率不高.毕竟循环判断DG所有行,如果选择一条,就删除一条.也就是执行SQL语句一次.速度很慢```
      

  10.   

    借用下14楼的代码List<string> list =new List<string>();
    foreach (DataGridItem dele in this.dgInfo.Items)
      {
      CheckBox cb = (CheckBox)dele.FindControl("ckAll");
      if (cb.Checked)
      {
      list.Add( this.dataGridView1.SelectedRows[0].Cells["Column7"].Value.ToString()));
      }
      }
    循环后删除
    for(int i=0;i<list.item.count;i++){
      userManage.DelUser(list[i]);
    }
      

  11.   

    另外一个方法:            string str = "-1,";
     for (int i = 0; i < dataGridView1.RowCount; i++)
      {
      if (dataGridView1.SelectedRows[i].Selected == true)
      {
        str = ","+dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString();  }
      }
      userManage.DelSelectedUser(li);//放在循环外DelSelectedUser()
    只要把DelUser里面的SQL语句的条件改成id in (str)
      

  12.   

    100分        public int DelSelectedUser(ArrayList al)
            {
                int rows = 0;
                using (SqlConnection myconn = new SqlConnection(stringconn))
                {
                    StringBuilder sql=new StringBuilder ("delete from files where id="+al[0]);
                    for(int i=1;i<al.Count;i++)
                    {
                        sql.Append(" or id=" + al[i]);
                    }
                    SqlCommand mycomm = new SqlCommand(sql.ToString(), myconn);
                    myconn.Open();
                    rows = mycomm.ExecuteNonQuery();
                    myconn.Close();
                }
                return rows;
            }
      

  13.   

    应该能满足楼主的需要
    public int DelSelectedUser(ArrayList li)
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < li.Count; ++i)
        {
            sb.Append(string.Format(",{0}", li[i].ToString()));
        }
        int rows = 0;
        using (SqlConnection myconn = new SqlConnection(stringconn))
        {
            SqlCommand mycomm = new SqlCommand("delete from files where id in("+sb.ToString(1,sb.Length-1)+")", myconn);
            myconn.Open();
            rows = mycomm.ExecuteNonQuery();
        }
        return rows;
      

  14.   

    这样也可以的        public int DelSelectedUser(ArrayList al)
            {
                int rows = 0;
                SqlConnection myconn = new SqlConnection(stringconn);
                SqlTransaction transaction = null;
                try
                {
                    myconn.Open();
                    transaction = myconn.BeginTransaction(IsolationLevel.ReadCommitted);                SqlCommand command = new SqlCommand();
                    command.Connection = myconn;
                    command.Transaction = transaction;                for (int i = 0; i < al.Count; i++)
                    {
                        command.CommandText = "delete from files where id=" + al[i];
                        try
                        {
                            rows += command.ExecuteNonQuery();
                        }
                        catch
                        {
                            continue;
                        }
                    }
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                }
                finally
                {
                    connection.Close();
                    transaction.Dispose();
                }
                return rows;
            }
      

  15.   

    这样更好,即使没有选择,也不会有问题!
    public int DelSelectedUser(ArrayList li)
    {
        StringBuilder sb = new StringBuilder("-1");
        for (int i = 0; i < li.Count; ++i)
        {
            sb.Append(string.Format(",{0}", li[i].ToString()));
        }
        int rows = 0;
        using (SqlConnection myconn = new SqlConnection(stringconn))
        {
            SqlCommand mycomm = new SqlCommand("delete from files where id in("+sb.ToString()+")", myconn);
            myconn.Open();
            rows = mycomm.ExecuteNonQuery();
        }
        return rows;
    }
      

  16.   

      string str = "-1,";
     for (int i = 0; i < dataGridView1.RowCount; i++)
      {
      if (dataGridView1.SelectedRows[i].Selected == true)
      {
      str = ","+dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString();  }
      }
      userManage.DelSelectedUser(li);//放在循环外
      

  17.   

      string str = "-1,";
     for (int i = 0; i < dataGridView1.RowCount; i++)
      {
      if (dataGridView1.SelectedRows[i].Selected == true)
      {
      str = ","+dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString();  }
      }
      userManage.DelSelectedUser(li);//放在循环外