将dataset中的数据 数据库中 java_在数据表(DataTable)中操作数据(转)

这篇博客介绍了在Java中使用DataRow进行数据操作的过程,包括BeginEdit、EndEdit和CancelEdit方法在编辑行状态中的应用。在编辑操作中,Proposed行版本用于管理临时值。ColumnChanged事件提供了一个验证列值的机会,允许在确认或取消编辑前检查ProposedValue。示例代码展示了如何结合使用这些方法并进行编辑验证。
摘要由CSDN通过智能技术生成

当您在DataRow中更改列值时,所做更改会立即置于行的Current状态中。然后,RowState会设置为Modified,并使用DataRow的AcceptChanges或RejectChanges方法来接受或拒绝所做更改。DataRow还提供了三种可用于在编辑行时将行的状态挂起的方法。这些方法是BeginEdit、EndEdit和CancelEdit。

当您直接在DataRow中修改列值时,DataRow会使用Current、Default和Original行版本来管理列值。除这些行版本以外,BeginEdit、EndEdit和CancelEdit方法还使用第四个行版本:Proposed。

在执行编辑操作(通过调用BeginEdit开始,并且通过使用EndEdit或CancelEdit或者通过调用AcceptChanges或RejectChanges结束)的过程中,Proposed行版本会存在。

在编辑操作过程中,您可以通过计算DataTable的ColumnChanged事件中的ProposedValue来将验证逻辑应用于各列。ColumnChanged事件保存DataColumnChangeEventArgs,可保持对正在更改的列和ProposedValue的引用。计算了建议值后,可以对其进行修改或取消编辑。编辑结束时,行从Proposed状态中移出。

您可以通过调用EndEdit来确认编辑,也可以通过调用CancelEdit来取消编辑。请注意,尽管EndEdit确实已确认您所做的编辑,但在调用AcceptChanges之前,DataSet并没有实际接受更改。另外请注意,如果在EndEdit或CancelEdit编辑结束之前调用AcceptChanges,编辑将会终止,并接受Current和Original行版本的Proposed行值。调用RejectChanges会以同样的方式结束编辑,并放弃Current和Proposed行版本。在调用AcceptChanges或RejectChanges之后调用EndEdit或CancelEdit不会起作用,因为编辑已经结束。

以下示例演示了如何将BeginEdit与EndEdit和CancelEdit一起使用。本示例也会检查ColumnChanged事件中的ProposedValue,并决定是否取消编辑。

DataTable  workTable  = new DataTable();

workTable.Columns.Add("LastName", typeof(String));

workTable.ColumnChanged += new DataColumnChangeEventHandler(OnColumnChanged);

DataRow workRow = workTable.NewRow();

workRow[0] = "Smith";

workTable.Rows.Add(workRow);

workRow.BeginEdit();

// Causes the ColumnChanged event to write a message and cancel the edit.

workRow[0] = "";

workRow.EndEdit();

// Displays "Smith, New".

Console.WriteLine("{0}, {1}", workRow[0], workRow.RowState);

protected static void OnColumnChanged(Object sender, DataColumnChangeEventArgs args)

{

if (args.Column.ColumnName == "LastName")

if (args.ProposedValue.ToString() == "")

{

Console.WriteLine("Last Name cannot be blank. Edit canceled.");

args.Row.CancelEdit();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值