原创日志

DataTable DataView DataRow 例子,修改和编辑和删除 DataView

[ 2009-06-26 15:11:19 | 作者: admin ]
字号: | |
dataView增加一列

DataView dataViewTao123 = new DataView ();
dataViewTao123.Table.Columns.Add(new DataColumn("tao123ID", typeof(Int32))); //增加一列
DataRowView drv; //声明一行
for(int i=0;i<dataViewTao123.Count;i++)
{
  drv = dataViewTao123[i];
  drv.BeginEdit(); //开始编辑
  drv["tao123ID"] = i ;
  drv.EndEdit();//结束编辑
}

修改 DataView (ADO.NET)
引用
可以使用 DataView 在基础表中添加、删除或修改数据行。 通过设置 DataView 的三个布尔值属性之一,可以控制使用 DataView 修改基础表数据的能力。 这三个属性是 AllowNew、AllowEdit 和 AllowDelete。 默认情况下,它们设置为 true。

如果 AllowNew 为 true,则可以使用 DataView 的 AddNew 方法来创建新的 DataRowView。 请注意,在调用 DataRowView 的 EndEdit 方法之前,新行实际上不会添加到基础 DataTable 中。 如果调用 DataRowView 的 CancelEdit 方法,则将丢弃新行。 另请注意,一次只能编辑一个 DataRowView。 如果在存在挂起行时调用 DataRowView 的 AddNew 或 BeginEdit 方法,则会对该挂起行隐式调用 EndEdit。 当调用 EndEdit 时,更改将应用于基础 DataTable,并且随后可以使用 DataTable、DataSet 或 DataRow 对象的 AcceptChanges 或 RejectChanges 方法来提交或拒绝更改。 如果 AllowNew 为 false,则当调用 DataRowView 的 AddNew 方法时,将引发异常。

如果 AllowEdit 为 true,可以通过 DataRowView 来修改 DataRow 的内容。 可以使用 DataRowView.EndEdit 确认对基础行的更改,或使用 DataRowView.CancelEdit 拒绝更改。 注意,一次只能编辑一行。 如果在存在挂起行时调用 DataRowView 的 AddNew 或 BeginEdit 方法,则会对该挂起行隐式调用 EndEdit。 当调用 EndEdit 时,建议更改将放置在基础 DataRow 的 Current 行版本中,随后可以使用 DataTable、DataSet 或 DataRow 对象的 AcceptChanges 或 RejectChanges 方法来提交或拒绝这些更改。 如果 AllowEdit 为 false,则当试图修改 DataView 中的值时,将引发异常。

当编辑现有 DataRowView 时,仍将引发基础 DataTable 的事件,并提供建议更改。 请注意,如果对基础 DataRow 调用 EndEdit 或 CancelEdit,那么无论是否对 DataRowView 调用 EndEdit 或 CancelEdit,都将应用或取消挂起的更改。

如果 AllowDelete 为 true,则可以使用 DataView 或 DataRowView 对象的 Delete 方法删除 DataView 中的行,这些行也将从基础 DataTable 中删除。 随后可以分别使用 AcceptChanges 或 RejectChanges 来提交或拒绝删除。 如果 AllowDelete 为 false,当调用 DataView 或 DataRowView 的 Delete 方法时,将引发异常。

以下代码示例禁用通过 DataView 删除行的功能,并使用 DataView 向基础表中添加新行。
//C#演示代码
DataTable custTable = custDS.Tables["Customers"];
DataView custView = custTable.DefaultView;
custView.Sort = "CompanyName";

custView.AllowDelete = false;

DataRowView newDRV = custView.AddNew();
newDRV["CustomerID"] = "ABCDE";
newDRV["CompanyName"] = "ABC Products";
newDRV.EndEdit();



DataView删除行

删除之前请设置 .AllowDelete = true
DataTable.Rows.Remove(行实例); //DataTable.Rows.Remove(OrderFormTable.Rows[0]);
DataTable.Rows.RemoveAt(行号);
DataRow.Delete(); //行自身移除
主意:删除多行的时候不要用for来遍历,需要使用foreach,因为删除后dataview的index会发生改变,实例
      dvInfo.AllowDelete = true;
      foreach (DataRowView drv1 in dvInfo )
      {
        if( tmpProjId==drv1["projId"].ToString() )//加入一行项目ID重复了,就删除掉到下一行去
        {
          drv1.Delete();
        }
        tmpProjId = drv1["projId"].ToString();
      }
[最后修改由 admin, 于 2013-09-06 16:06:11]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1245

这篇日志没有评论。

此日志不可发表评论。