RowStateDemo

原创 2007年09月18日 19:48:00

Code:

using System;
using System.Data;

namespace RowStateDemo
{
 /// <summary>
 /// RowStateDemo2 的摘要说明。
 /// 演示RowState的
 /// </summary>
 public class RowStateDemo2
 {
  public RowStateDemo2()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }  

  static void Main(string[] args)
  {
   DataTable dt=new DataTable();
   DataColumn dc=new DataColumn();
   dt.Columns.Add("stuNo",typeof(int));
   dc.AllowDBNull=false;   
   dc.DefaultValue=25;    
   dt.Columns.Add("stuName",typeof(string));
   dt.Columns.Add("stuMarks",typeof(double));

            Console.WriteLine("※※※※※以下是对stuNo=101行进行操作※※※※※"); 
   DataRow dr=dt.NewRow();
   Console.WriteLine("建立新行dr时,RowState:"+dr.RowState);
   dr["stuNo"]=101;
   dr["stuName"]="Peter";
   dr["stuMarks"]=55.5;
   Console.WriteLine("对新行dr赋值后,但执行Add(dr)前,RowState:"+dr.RowState);
   dt.Rows.Add(dr);  
   Console.WriteLine("执行Add(dr)后,但执行dr.AcceptChanges()前,RowState:"+dr.RowState);
   dr.AcceptChanges();
   Console.WriteLine("执行dr.AcceptChanges()后,RowState:"+dr.RowState);
   dt.Rows.Remove(dr);
   Console.WriteLine("执行Remove(dr)后,RowState:"+dr.RowState);  
   
   Console.WriteLine("※※※※※以下是对stuNo=102行进行操作※※※※※");
   dr=dt.NewRow();
   dr["stuNo"]=102;
   dr["stuName"]="Jack";
   dr["stuMarks"]=75.5;
   dt.Rows.Add(dr);  
   dr.RejectChanges();
   Console.WriteLine("执行Add(dr)后,同时执行dr.RejectChanges();后,RowState:"+dr.RowState);
   
   Console.WriteLine("※※※※※以下是对stuNo=103行进行操作※※※※※"); 
   dr=dt.NewRow();
   dr["stuNo"]=103;
   dr["stuName"]="Tom";
   dr["stuMarks"]=85.5;
   dt.Rows.Add(dr); 
   dr.AcceptChanges();  
   Console.WriteLine("执行Add(dr)、dr.AcceptChanges()后,RowState:"+dr.RowState);
   dr.BeginEdit();  
   Console.WriteLine("执行Add(dr)、dr.AcceptChanges()、dr.BeginEdit()后,RowState:"+dr.RowState);
   dr["stuName"]="Rose";
   Console.WriteLine("执行dr.BeginEdit()后,同时修改了值,但在dr.EndEdit()前,RowState:"+dr.RowState);
   dr.EndEdit();
   Console.WriteLine("执行dr.BeginEdit()后,同时修改了值,但在dr.EndEdit()后,RowState:"+dr.RowState);
   dr.RejectChanges();
   Console.WriteLine("dr.RejectChanges()后,RowState:"+dr.RowState); 

   Console.WriteLine("※※※※※以下是对stuNo=104行进行操作※※※※※"); 
   dr=dt.NewRow();
   dr["stuNo"]=104;
   dr["stuName"]="Bill";
   dr["stuMarks"]=75.5;
   dt.Rows.Add(dr);  
   dr.AcceptChanges();
   dr.Delete();
   Console.WriteLine("执行Add(dr)、dr.AcceptChanges()、dr.Delete()后,RowState:"+dr.RowState);
   dr.RejectChanges();
   Console.WriteLine("执行Add(dr)、dr.AcceptChanges()、dr.Delete()后,RowState:"+dr.RowState);
 
   Console.WriteLine("※※※※※以下是对stuNo=105行进行操作※※※※※");
   dr=dt.NewRow();
   dr["stuNo"]=105;
   dr["stuName"]="Mary";
   dr["stuMarks"]=78.5;
   dt.Rows.Add(dr);  
   dr.AcceptChanges();

   Console.WriteLine("※※※※※显示DataTable中的数据※※※※※");   
   for(int i=0;i<dt.Rows.Count;i++)
   {
    Console.WriteLine("{0}/t{1}/t{2}",dt.Rows[i]["stuNo"],dt.Rows[i]["stuName"],dt.Rows[i]["stuMarks"]);
   }
  }
 }
}

result:

※※※※※以下是对stuNo=101行进行操作※※※※※
建立新行dr时,RowState:Detached
对新行dr赋值后,但执行Add(dr)前,RowState:Detached
执行Add(dr)后,但执行dr.AcceptChanges()前,RowState:Added
执行dr.AcceptChanges()后,RowState:Unchanged
执行Remove(dr)后,RowState:Detached
※※※※※以下是对stuNo=102行进行操作※※※※※
执行Add(dr)后,同时执行dr.RejectChanges();后,RowState:Detached
※※※※※以下是对stuNo=103行进行操作※※※※※
执行Add(dr)、dr.AcceptChanges()后,RowState:Unchanged
执行Add(dr)、dr.AcceptChanges()、dr.BeginEdit()后,RowState:Unchanged
执行dr.BeginEdit()后,同时修改了值,但在dr.EndEdit()前,RowState:Unchanged
执行dr.BeginEdit()后,同时修改了值,但在dr.EndEdit()后,RowState:Modified
dr.RejectChanges()后,RowState:Unchanged
※※※※※以下是对stuNo=104行进行操作※※※※※
执行Add(dr)、dr.AcceptChanges()、dr.Delete()后,RowState:Deleted
执行Add(dr)、dr.AcceptChanges()、dr.Delete()后,RowState:Unchanged
※※※※※以下是对stuNo=105行进行操作※※※※※
※※※※※显示DataTable中的数据※※※※※
103     Tom     85.5
104     Bill    75.5
105     Mary    78.5
Press any key to continue

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)