那么你可以先定义一个DataTable,将DataTable中的数据绑定到DataGrid,那么这样你的操作是对DataTable,并没有操作数据库,最后通过SqlCommandBuilder向数据库提交。

解决方案 »

  1.   

    能具体说说对datatable的上述三种操作吗?^_^重要的是怎样知道我在datagrid中要修改的行,是datatable中的哪一行呢?二者如何对应
      

  2.   

    1、首先grid必须绑定到DataSet.
    2、写好 Adapter.InsertCommand
       Adapter.UpdateCommand
       Adapter.DeleteCommand
    当然也可以CommandBuilder生成。
    3、在grid中编缉后,调用Adapter.Update(dataset),添加,编辑,删除数据的结果就一定保存在数据库中了。
    4、建议系统地看一下ado.net的书,学习.net这些概念性的东西一定要非常清楚。
      

  3.   

    dataGrid 是直接对数据库进行操作的
    要想解决你的问题应该加一个过度的datatable
    这样就可以了
      

  4.   

    dataGrid中的CurrentRowIndex属性就代表当前的行数,也可以依靠他来对应dataTable中的行。不过无需知道datagrid中的行和datatable中行的对应关系。update的时候就全部更新了。其他按 river723(hwg) 说的就ok了。
      

  5.   

    private void DelectItem(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)//删除操作
    {
    System.Data.OleDb.OleDbTransaction OTr;
    this.DataSelect.CommandText = "DELETE FROM CallBoardTable WHERE ID="+e.Item.Cells[0].Text.Trim()+"";
    this.MyConn.Open();
    OTr = this.MyConn.BeginTransaction();
    this.DataSelect.Transaction = OTr; try
    {
    this.DataSelect.ExecuteNonQuery();
    OTr.Commit();
    this.Page.RegisterStartupScript("dsd","<Script language='JavaScript'>window.alert('删除成功!')</Script>");
    this.MyConn.Close(); DataGridBinding();
    FileNameBinding();
    }
    catch
    {
    OTr.Rollback();
    this.Page.RegisterStartupScript("dsd","<Script language='JavaScript'>window.alert('删除失败!')</Script>");
    }
    }
      

  6.   

    DataGrid有关键字的,通过关键字可以知道是编辑的哪个行,编辑或做了其他的操作后重新绑定一次。要知道,你每次都是在对DataTable在操作,并没有操作数据库,等确定后就可以通过SqlCommandBuilder向数据库批量提交了。