CSDN博客

img bccu

公交项目:(一)、期间管理的制作

发表于2004/10/13 10:48:00  714人阅读

分类: 项目笔记


1、添加一年(12条)的记录:
   点添加按钮后,自动在webgrid上添加了12条记录(只是显示在控件上,然没有保存进数据库),
   代吗如下:
   private void bind(WebGrid dg)
 {    
  if(chkadd.Checked ==false)
  {
   DataSet dstmp=new DataSet();
   if(!dstmp.Tables.Contains("webgrid"))
   {
    dstmp.Tables.Add(sqldst.Tables["webgrid"].Clone());
   }
   wgridtmp.DataSource=dstmp;
  }
  dg.DataSource=sqldst;
  dg.DataMember ="webgrid";
  dg.DataBind();
 }
   private void add()
   {
 chkadd.Checked =true;
 if(sqldst.Tables["webgrid"].DefaultView.Count >0)
 {
  Response.Write (msg.MessageBox ("记录不为空,不能添加!"));
 }
 else
 {
  string year=System.DateTime.Today.Year .ToString ();
  //给sqldst中添加12条默认的记录,以便再进行修改
  for(int i=1;i<13;i++)
  {
   DataRow dr=sqldst.Tables ["webgrid"].NewRow();
  
   dr["period_bh"]=year+i.ToString("D2");
   dr["period_start"]=Convert.ToDateTime (year+"-"+i.ToString("D2")+"-"+"01").ToShortDateString();
   if(i<12)
   {
    dr["period_end"]=Convert.ToDateTime (year+"-"+(i+1).ToString("D2")+"-"+"01").AddDays(-1).ToShortDateString();
    
   }
   else
   {
    dr["period_end"]=Convert.ToDateTime (year+"-12-31").ToShortDateString() ;
   }
   dr["period_chk"]="";
   dr["period_chkdate"]=null;
   dr["period_chkbz"]=0;
   dr["period_qybz"]=0;
   dr["period_bz"]="";
   dr["period_startbz"]=0;
   sqldst.Tables["webgrid"].Rows.Add (dr);

  }

//  DataSet dsx=(DataSet)wgrid.DataSource;
  DataSet dst=(DataSet)wgridtmp.DataSource;
//      将sqldst中刚添加的数据合并到dst(一个结构复制的sqldst),dst为wgridtmp(一个临时的webgrid)的数据源,利用wgridtmp保存数据。
  dst.Merge(sqldst.Tables["webgrid"].GetChanges(System.Data.DataRowState.Added),false,System.Data.MissingSchemaAction.Add);
//  dst.Merge(dsx.Tables["webgrid"].GetChanges(System.Data.DataRowState.Added),false,System.Data.MissingSchemaAction.Add);
  wgridtmp.DataSource=dst;
  settoolbar(this.Toolbar1,false);
  setwgrid(this.wgrid,"Edit");
//  sqldap.Update (sqldst,"webgrid"); 
  }
    }
    上面的代码只是给sqldst中添加了12条记录,所以要对webgrid进行重新绑定才能显数据显示在webgrid上,当然这时也还没有将数据保存进数据库
    因为要在修改后才保存进数据。
    2、做相应的修改:
      修改只能是对启用标志和终止期间的修改,不过在终止期间改变的同时起始期间也做相应的改变
      由于对后台所作的处理只是更新了sqldst中的数据,所以要同时到webgrid的数据在前台进行修改,以达到数据和显示同步
     (1)、后台处理:
       private void wgrid_UpdateRow(object sender, ISNet.WebUI.WebGrid.RowEventArgs e)
  {
   this.wgrid.RootTable.Columns[6].EditType=ISNet.WebUI.WebGrid.EditType.Checkbox;
   string olddate;
   DataSet dsx=(DataSet)wgrid.DataSource;
   int j=e.Row.Position; 
   int k=e.Row.Position;
   
   DataRow dd=dsx.Tables["webgrid"].Rows[j];
   string start=dd["period_start"].ToString ();
   string end=dd["period_end"].ToString ();
      
   System.TimeSpan ss=Convert.ToDateTime(end).Subtract(Convert.ToDateTime(start)) ;
   int qj=Convert.ToInt32 (ss.TotalDays);
   //会计期间在20——40天内
   if((qj>20)&&(qj<40))
   {
    DataRow drqybz=dsx.Tables["webgrid"].Rows[j];
    if(drqybz["period_qybz"].ToString ()!="False")
    {
        //设置启用月份
     for(int i=0;i<12;i++)
     {
      DataRow dr=dsx.Tables["webgrid"].Rows[i];
      if(i!=j)
      {
       dr["period_qybz"]=0;
      }
      else
      {
       dr["period_qybz"]=1;
      }
     }
     for(int m=0;m<12;m++)
     {     
      DataRow dr1=dsx.Tables["webgrid"].Rows[m];
      dr1["period_chk"]="";
      dr1["period_chkbz"]=0;
      dr1["period_chkdate"]=null;
     }
     //给启用月份以前的记录添加数据
     for(int l=0;l<j;l++)
     {
      DataRow dr2=dsx.Tables["webgrid"].Rows[l];
      dr2["period_chk"]="admin";
      dr2["period_chkbz"]=1;
      dr2["period_chkdate"]=System.DateTime.Today;
     }
    }
                //一月份是整月
    if(j==0)
    {
    
     DataRow dr=dsx.Tables ["webgrid"].Rows[0];
     string datestart=dr["period_start"].ToString ();
     string year=datestart.Substring (0,4);
     dr["period_end"]=Convert.ToDateTime (year+"-01-31");
    }
    else
    {
     
     for(int i=0;i<(11-k);i++)
     {
      DataRow dr1=dsx.Tables ["webgrid"].Rows[j];
      DataRow dr2=dsx.Tables ["webgrid"].Rows[j+1];

      olddate=dr1["period_end"].ToString ();
      //该用的起始期间为上月的终止期间加一天,终止期间为上月终止期间加一个月
      dr2["period_start"]=Convert.ToDateTime (olddate).AddDays (1);
      dr2["period_end"]=Convert.ToDateTime (olddate).AddMonths (1);
      j++;
     }
     //十二月份是整月
     DataRow dr=dsx.Tables ["webgrid"].Rows[11];
     string datestart=dr["period_start"].ToString ();
     string year=datestart.Substring (0,4);
     dr["period_end"]=Convert.ToDateTime(year+"-12-31");
    }
    
     } 
   DataSet dst=(DataSet)wgridtmp.DataSource;
   if(chkadd.Checked==true)
   {
       //添加和添加修改时的处理
       dst.Tables["webgrid"].Rows.Clear();
    for(int i=0;i<dsx.Tables["webgrid"].Rows.Count;i++)
    {
     DataRow dr=dsx.Tables["webgrid"].Rows[i];
     dst.Tables["webgrid"].Rows.Add(dr.ItemArray );
    }
   }
   else
   {
      //修改会计期间时的处理
    dst.Merge(dsx.Tables["webgrid"].GetChanges(System.Data.DataRowState.Modified),false,System.Data.MissingSchemaAction.Add);
   }
   wgridtmp.DataSource=dst;
  }
  2、前台处理:
     在webgrid的OnBeforeUpdate();中调用setiperod();
  function setiperod()
  {
     //定义一个webgrid以及行集
   var grid = wgGetGridById("wgrid");
      var hTbl = grid.GetRootTable().gettbTBElement();
   var row =grid.getSelectedObject().getRowElement();
            var cell0=wgGetCellByName(row,"period_bh");
            var cell1=wgGetCellByName(row,"period_end");
            var cell2=wgGetCellByName(row,"period_qybz");
      if(hTbl.rows.length>0)
      { 
           var rows = hTbl.rows;
           if(cell2.childNodes[0].checked==true)
                    {  
              for (var i=0;i<rows.length; i++)
     {
      if(wgGetCellByName(rows[i],"period_bh").innerText!=cell0.innerText)
      {
       wgGetCellByName(rows[i],"period_qybz").childNodes[0].checked=false;
      }
                  else
                  {
          wgGetCellByName(rows[i],"period_qybz").childNodes[0].checked=true;
          wgGetCellByName(rows[i],"period_qybz").childNodes[0].disabled=false;
                  }
              }
                }
               
                var kdate=new Date();
                var jDate=new Date();
                kdate=strtodate(wgGetCellByName(row,"period_start").innerText);
                jdate=strtodate(wgGetCellByName(row,"period_end").innerText);
                var bz;
                bz=((jdate-kdate)/86400000);
                if(bz>20&&bz<40)
                {
        for (var i=0;i<rows.length; i++)
     {
      if(wgGetCellByName(rows[i],"period_bh").innerText>cell0.innerText)
      {
       var startdate=new Date();
       var enddate=new Date();
       startdate=strtodate(wgGetCellByName(rows[i-1],"period_end").innerText);
          startdate.setDate(startdate.getDate()+1);
          var tyear;
          tyear=startdate.getFullYear();
          var startmonth;
          var startday;
          startmonth=ntostr(startdate.getMonth()+1);
          startday=ntostr(startdate.getDate());
       wgGetCellByName(rows[i],"period_start").innerText=startdate.getFullYear()+"-"+startmonth+"-"+startday;
       //wgGetCellByName(rows[i],"period_start").innerText=startdate.getFullYear()+"-"+(startdate.getMonth()+1)+"-"+(startdate.getDate());
          enddate=startdate;
          enddate.setMonth(enddate.getMonth()+1);
          enddate.setDate(enddate.getDate()-1);
          var enmonth;
          var endday;
          if(i<11)
          {
           endmonth=ntostr(enddate.getMonth()+1);
           endday=ntostr(enddate.getDate());
        wgGetCellByName(rows[i],"period_end").innerText=enddate.getFullYear()+"-"+endmonth+"-"+endday;
        //wgGetCellByName(rows[i],"period_end").innerText=enddate.getFullYear()+"-"+(enddate.getMonth()+1)+"-"+(enddate.getDate());
       }
       else
       {
        wgGetCellByName(rows[i],"period_end").innerText=tyear+"-12-31"; 
       }
      }
     }
     }
     else
     {
          alert("会计期间只能在20--40天内!");
     }
   }  
  return true;
 }
       
   

阅读全文
0 0

相关文章推荐

img
取 消
img