本帖最后由 shichuanwuhan 于 2010-03-26 15:28:15 编辑

解决方案 »

  1.   

    直接删除数据库中的数据,然后重新给DATAGRIDVIEW绑定数据源
      

  2.   

    抛出异常
    try
    {
          sqlconnection  sqlconnection = new sqlconnection(连接数据库);//先创建sqlconnection对象,并连接sql数据库
          this.sqlconnection.Open();//在打开sql数据库连接
          sqlcommand sqlcommand = new sqlcommand("delete from 表名 ",this.sqlconnection)
    //在创建sqlcommand对象,并写sql语句
          this.i = this.sqlcommand.ExecuteNonery();//调用sqlcommand的方法
          if(i!=0)//判断
          {
               MessageBox.Show("删除成功!");
          }
           else
          {
               MessageBox.Show("删除失败!");      }
    }catch(Exception ex)
    {}finally
    {
        this.sqlconnection.Close();//最后关闭
    }
    可以试用下
      

  3.   

    我只会删除界面上的条目,不知道如何直接删除数据库里的。是用RemoveAt么?我初学,啥都不会。
      

  4.   

    但是会报“除非 DataGridView 被数据绑定到支持更改通知并允许删除的 IBindingList,否则不能以编程方式移除行。”的错误你在用HistoryView这个做XUN环,在其XUN环内部是不能删除它的行的。
      

  5.   


    请教下应该怎么弄呢?我这里必须要用到循环。
    我没有用DataGridViewRow作循环体,用的是DataGridView的index也不行么?
      

  6.   


    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
           
            private DataTable dt = new DataTable ();
            private OdbcDataAdapter da = new OdbcDataAdapter();
       private void Form1_Load_1(object sender, EventArgs e)
            {
              OdbcConnection cn = new OdbcConnection("driver={IBM DB2 ODBC DRIVER};Database=SDDT;hostname=223.1.1.19;port=50000; protocol=TCPIP;uid=LLL;pwd=BCL987; CurrentSchema=SDDT;");
              OdbcCommand com = new OdbcCommand("select * from MODEL", cn);
              da =new OdbcDataAdapter (com );
                                    
                       
                DataTable dt = new DataTable();
               
                dt .Locale = System .Globalization .CultureInfo .InvariantCulture ;
                da.Fill(dt);
                this.dataGridView1.DataSource = dt;        }    private void getupdate()
       {
       dt = dataGridView1.DataSource as DataTable;//把DataGridView绑定的数据源转换成DataTable 
       OdbcCommandBuilder cb = new OdbcCommandBuilder(da);    //将数据放到datatable  中    datagridview  的数据源    是datatable  
       //修改datagridview  
       //更新  
       da.Update(dt);
       }
       
            private void button1_Click_1(object sender, EventArgs e)
            {
                this.getupdate();          
                MessageBox.Show("更新成功");
            }        private void button2_Click(object sender, EventArgs e)
            {
                OdbcConnection con = Program.createConnection();
                con.Open();            DataSet  ds = new DataSet();
                DataTable  dt = new DataTable();
                string querysql = "select * from MODEL";
                OdbcDataAdapter da = new OdbcDataAdapter(querysql, con);
                da.Fill(ds, "tab");
                dt = ds.Tables[0];
                this.dataGridView1.DataSource = dt;
                con.Close();
            }        private void button3_Click(object sender, EventArgs e)
            {
                int row = dataGridView1.SelectedRows.Count;
                if (MessageBox.Show("确认删除选中的" + row.ToString() + "条记录吗?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    while (row > 0)
                    {
                        ((DataRowView)dataGridView1.SelectedRows[0].DataBoundItem).Row.Delete();
                        row = row - 1;
                    }
                    this.getupdate();
                    MessageBox.Show("删除成功");
                }        }
      

  7.   

                IList list = (IList)datagridview1.DataSource;
                list.RemoveAt(datagridview1.CurrentRow.Index);
                datagridview1.DataSource = null;
                datagridview1.DataSource = list;因为你绑定的数据源是list等集合,不是datagridview 指定的数据源,所以可以帮数据源转为list,再从集合类中remove,最后在绑定就ok