BindingManagerBase 跟踪不一致

界面初始状态如图1所示,显示的公司名称为”三川实业有限公司“的记录为表tbl的第1条记录。

                                         图1 界面初始状态

        BindingManagerBase bm = null;
DataTable tbl = new DataTable();

      private void btnDelete_Click(object sender, EventArgs e)

        {
DataRow r = tbl.Rows[bm.Position];
MessageBox.Show(r["公司名称"].ToString());
r.Delete();
//r.AcceptChanges();
}

执行上面的删除程序,注意r.AcceptChanges();语句为注释状态。执行结束后,行r仍存在于表tbl中,只是状态由之前的Unchanged变为Deleted。此时界面如图2所示,显示的是第2条记录”东南实业“。

                                             图2 

再执行前面的删除程序,此时语句DataRow r = tbl.Rows[bm.Position];获取的是被删除的第1条记录(bm.Position=0),而非上界面上显示的公司名称为”东南实业“的记录。因此,导致了bm对象的数据跟踪与界面显示不一致的情况,具体为:bm.Positon指向的是第1条被删除的记录,但与bm对象所对应的数据源绑定控件却显示的是另外一条记录。

转载于:https://www.cnblogs.com/2008freestyle/archive/2012/03/27/2418881.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值