把DataSet放在ViewState或Session里,每次增、删、改(注意用代码,不要用DataSource控件)操作完成后再更新ViewState或Session里的DataSet。

解决方案 »

  1.   

    批量更新类,关键语句红色标识出来了。
    转自下面网站,allen_21229的代码
    http://dev.csdn.net/article/75/75827.shtm
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Windows.Forms;
    namespace winApplication
    {
         public class sqlAccess
         {
             //与SQL Server的连接字符串设置
             private string _connString;
            private string _strSql;
            private SqlCommandBuilder sqlCmdBuilder;
            private DataSet ds = new DataSet();
            private SqlDataAdapter da;
            public sqlAccess(string connString,string strSql)
             {
                  this._connString=connString;
             }
             private SqlConnection GetConn() 
             { 
                  try 
                  { 
                       SqlConnection Connection = new SqlConnection(this._connString); 
                       Connection.Open(); 
                       return Connection; 
                  } 
                  catch (Exception ex) 
                  { 
                       MessageBox.Show(ex.Message,"数据库连接失败");
                       throw;
                  } 
             }
             //根据输入的SQL语句检索数据库数据
             public DataSet SelectDb(string strSql,string strTableName)
             { 
                  try
                  {
                  this._strSql = strSql;
                  this.da = new SqlDataAdapter(this._strSql,this.GetConn());
                  this.ds.Clear();
                  this.da.Fill(ds,strTableName);
                  return ds;//返回填充了数据的DataSet,其中数据表以strTableName给出的字符串命名
                    }
                  catch (Exception ex) 
                  { 
                       MessageBox.Show(ex.Message,"数据库操作失败");
                       throw;
                  } 
             }
             //数据库数据更新(传DataSet和DataTable的对象)         public DataSet UpdateDs(DataSet changedDs,string tableName)
             {
                  try
                  {
                  this.da = new SqlDataAdapter(this._strSql,this.GetConn());
                  this.sqlCmdBuilder = new SqlCommandBuilder(da);
                  this.da.Update(changedDs,tableName);
                  changedDs.AcceptChanges();
                  return changedDs;//返回更新了的数据库表
                    }
                  catch (Exception ex) 
                  { 
                       MessageBox.Show(ex.Message,"数据库更新失败");
                       throw;
                  } 
             }
    使用说明总结:
    1. GetConn方法创建一个数据库连接,返回SqlConnection。
    2.使用的select命令中必须包含主键,这点大家都知道的!
    3. this.da.Fill(ds,strTableName) 填充数据集
    4.构造CommandBuilder对象时,将DataAdapter对象作为构造函数参数传入:
      this.sqlCmdBuilder = new SqlCommandBuilder(da);
    5. 在调用UpdateDs()更新数据库前,请检查changedDs是否已经被更新过,用changedDs.[tableName] GetChanges() != null;
    6.用this.da.Update(changedDs,tableName)方法更新数据,然后调用changedDs.AcceptChanges()才能真正的更新数据库,调用 changedDs.RejectChanges() 取消更新。
      

  2.   

    关键语句
     this.da.Update(changedDs,tableName);
      

  3.   

    干脆直接操作DataGrid,保存时遍历DataGrid的结果还好一点
      

  4.   

    把DataSet放在ViewState或Session里,每次增、删、改(注意用代码,不要用DataSource控件)操作完成后再更新ViewState或Session里的DataSet3楼的可以改一下