利用webgrid实现数据的批处理(添加和修改)


1.原理及使用的技术
  (1) webgrid的允许添加、允许修改的功能实现即时的更新(DataSet)
  (2) 利用SqlDataAdapter的Update方法,更新数据源,达到更新数据库的目的。
2.实现过程
  (1) 添加一个webgrid(webgrid1)设置它的AllowAddNew,和AllowEdit的属性为True.
  (2) 指定该webgrid的DataMember,并为它添加需要显示的列。
  (3) 复制一个与(webgrid1)一模一样的webgrid命名为wgridtmp。
3.代码如下.
  private void bind(WebGrid dg)
 {  
    if(chkadd.Checked ==false)
 {
  DataSet dstmp=new DataSet();
  if(!dstmp.Tables.Contains("checks"))
  {
   dstmp.Tables.Add(sqldst.Tables["checks"].Clone());
  }
  wgridtmp.DataSource=dstmp;
 }
 dg.DataSource=sqldst;
 dg.DataMember ="checks";
 dg.DataBind();
  }
  private void WebGrid1_AddRow(object sender, ISNet.WebUI.WebGrid.RowEventArgs e)
  {
 //((DataRow)e.Row.DataRow)["checks_xmbh"]=this.txtxmbh.Text.Trim ();
 DataSet dsx=(DataSet)WebGrid1.DataSource;
 DataSet dst=(DataSet)wgridtmp.DataSource;
 dst.Merge(dsx.Tables["checks"].GetChanges(System.Data.DataRowState.Added),false,System.Data.MissingSchemaAction.Add);
 wgridtmp.DataSource=dst;
  }
   private void save()
  {
 try
 {
  DataSet dstmp=(DataSet)this.wgridtmp.DataSource;
  if(dstmp!=null)
   sqldap.Update(dstmp);
  else
  {
   Response.Write(msg.MessageBox("数据格式、长度及范围有误!"));
  }
 }
 catch(SqlException Ex)
 { 
  Response.Write(msg.MessageBox("数据格式、长度及范围有误,错误号:"+Ex.Number+",详细:"+Ex.Message));
  DataSet dserr=(DataSet)this.WebGrid1.DataSource;
  dserr.RejectChanges();
  this.WebGrid1.DataSource=dserr;
  this.WebGrid1.DataBind();
 }
 finally
 {
  setwgrid(this.WebGrid1 ,"");
  settoolbar(this.Toolbar1,true);
  sqldst.Clear();
  sqldap.Fill (sqldst,"checks");   
 } 
  }