你只要用DataAdapter的Update()方法更新DataSet的一个表就行了,他就会对dataset的这个表的所有改动进行更新!
如:
OleDbDataAdapter daTable1=new OleDbDataAdapter("select * from table1",conn);
daTable1.Update(ds.Table1);

解决方案 »

  1.   

    可以的,不过好像最后update还是需要用到的.
    点“修改”的时候,在datagrid里面设置一个隐藏的ID序列
    这样就可以取值了。
      

  2.   

    直接用datagrid里的字定义控件就可以了
      

  3.   

    如果你的DataTable中的列一个不少的按顺序全都在datagrid中,你直接通过index来赋值就行了。
    注意,你应该把PK列设为只读
      

  4.   

    参考:SqlConnection sqlConn=new SqlConnection("server=.;database=pubs;user id=sa;password=;");
    SqlDataAdapter adapter=new SqlDataAdapter("select * from authors",sqlConn);
    //用来自动生产更新命令
    SqlCommandBuilder cb=new SqlCommandBuilder(adapter);
    sqlConn.Open();
    DataSet ds=new DataSet();
    adapter.Fill(ds);
    sqlConn.Close();
    //处理数据在打开和关闭之后
    //更改数据
    ds.Tables[0].Rows[0][1]="A";
    //更新数据库
    sqlConn.Open();
    adapter.Update(ds);
    sqlConn.Close();
      

  5.   

    是啊,绑定dataset就不用再些updata语句了。
      

  6.   

    各位,能不能说的详细点,我怎么做都不行啊。总是弹出:
    “当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。”错误信息。
    代码如下:
    protected void Grid_UpdateCommand(object sender,DataGridCommandEventArgs e)
    {
             if(e.CommandName=="Update")
    {
        string sql = "Select * from [DiskInfo] Order by [CardID]";
        ds = new DataSet();
        OleDbDataAdapter adapter = new OleDbDataAdapter(sql,dbmanager.helper.myConnection);
        adapter.Fill(ds,"DiskInfo");    int nshtR = (DiskGrid.CurrentPageIndex * DiskGrid.PageSize)+DiskGrid.EditItemIndex;     for(int i=1;i<DiskGrid.Columns.Count;i++)
        {
    string s = ((TextBox)e.Item.Cells[i].Controls[0]).Text;
    ds.Tables["DiskInfo"].Rows[nshtR][i] = s;
        }
        adapter.Update(ds,"DiskInfo");
        DiskGrid.DataSource = ds.Tables["DiskInfo"].DefaultView;     DiskGrid.DataBind();
        DiskGrid.EditItemIndex = -1;
         }
    }