使用bindingSource 可以对数据进行修改的取消吗?

tank_2009 2009-10-22 02:14:40
数据的修改包括了,修改,删除,新增

但操作都没有提交到数据库

当点击“取消”后,可以还原到未修改之前吗?
...全文
617 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tank_2009 2009-10-22
  • 打赏
  • 举报
回复
MSDN改版了,呵呵

刚才上去看到他对 Rejectchanges()的解释:

DataSet.RejectChanges 方法
回滚自创建 DataSet 以来或上次调用 DataSet.AcceptChanges 以来对其进行的所有更改。


我想这个应该就是我想要的了

Dobzhansky 您觉得最好不要用这个吗?
Dobzhansky 2009-10-22
  • 打赏
  • 举报
回复
如果硬要来,
bindingNavigator1.BindingSource.DataSource 是 DataTable 还是 DataSet,

拿到他们, 调用 DataTable , DataSet 的 RejectChanges()

不过这样就强类型化了, 终端业务应用这样干可以

Framework / toolkit 最好不要这样.
tank_2009 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dobzhansky 的回复:]
事件中

      bindingNavigator1.BindingSource.CancelEdit();
      bindingNavigator1.Refresh();

[/Quote]

CancelEdit只能取消对当前单元格的修改。
Dobzhansky 2009-10-22
  • 打赏
  • 举报
回复
事件中

bindingNavigator1.BindingSource.CancelEdit();
bindingNavigator1.Refresh();
tank_2009 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dobzhansky 的回复:]
拖入 BindingNavigator , 看看生成的代码, 增加一个按钮不是难事

我就定制了一下, 使得 BindingNavigator 的 添加和删除操作可以取消
[/Quote]

增加一个按钮当然不难,但是怎样实现他的功能?
猿来是我 2009-10-22
  • 打赏
  • 举报
回复
没有提交到数据库前可以的。
Dobzhansky 2009-10-22
  • 打赏
  • 举报
回复
拖入 BindingNavigator , 看看生成的代码, 增加一个按钮不是难事

我就定制了一下, 使得 BindingNavigator 的 添加和删除操作可以取消
tank_2009 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dobzhansky 的回复:]
取消操作的 UI 部件需要你自己提供吧
按钮, 菜单都行,

点击后执行 BindingSource 的 CancelEdit()


那个 BindingNavigator 有没有撤销按钮, 忘记了, 记得好似没有.
[/Quote]

确实 BindingNavigator 没有撤销按钮,如果只能自己写的话,貌似很难。
Dobzhansky 2009-10-22
  • 打赏
  • 举报
回复
取消操作的 UI 部件需要你自己提供吧
按钮, 菜单都行,

点击后执行 BindingSource 的 CancelEdit()


那个 BindingNavigator 有没有撤销按钮, 忘记了, 记得好似没有.
tank_2009 2009-10-22
  • 打赏
  • 举报
回复
我现在已经把 dataTable绑定到 bindingSource,然后 DataGridView与bindingSource绑定在一起

现在我操作 dataGridView , 做了一引起数据的修改,但是怎样点击“取消”时,还原数据呢?
Dobzhansky 2009-10-22
  • 打赏
  • 举报
回复
BindingSource 是一个好用的功能代理,


EndEdit() / CancelEdit / AddNew

可以使用.

最终的操作还是过渡到数据源上,

直接对数据源修改也是可以的,
BindingSource 也能感知到(数据源必须能激发变动事件)修改,
同时反映的绑定的界面元素上,

其实真正的数据绑定能力还是来自底下的数据源,
BindingSource 只是一个一致性的数据绑定界面.

如果学习数据绑定, 可以参考 System.Data.DataView ,
DataTable 本身, 绑定能力有限.


zzxap 2009-10-22
  • 打赏
  • 举报
回复
保存的时候用foreach循环添加该table的数据到数据库
zzxap 2009-10-22
  • 打赏
  • 举报
回复
添加:

DataTable cart = new DataTable();
if (Session["shopingcar"] == null)
{
cart.Columns.Add("商品编号", typeof(int));
cart.Columns.Add("商品名称", typeof(string));
cart.Columns.Add("商品单价", typeof(double));
cart.Columns.Add("商品数量", typeof(int));
Session["shopingcar"] = cart;
}
cart = (DataTable)Session["shopingcar"];
DataRow dr = cart.NewRow();
dr["商品编号"] = model.ID;
dr["商品名称"] = model.产品名称;
dr["商品单价"] = double.Parse(model.价格);
dr["商品数量"] = 1;
cart.Rows.Add(dr);



修改:

必须这样:
DataRow row=myTable.Rows[0];
row.BeginEdit();
row.[ "userName "]= "aa ";
row[ "pwd "]= "121 ";
row.EndEdit();



删除某行
代码如下:
删除第二行
myTable.Rows.RemoveAt(1);
zzxap 2009-10-22
  • 打赏
  • 举报
回复
你可以在datatable里面做。
zhouyanfss 2009-10-22
  • 打赏
  • 举报
回复
当然了,在后台把你的绑定函数重新运行就可以了!

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧