但操作都没有提交到数据库
当点击“取消”后,可以还原到未修改之前吗?
15 个解决方案
#1
当然了,在后台把你的绑定函数重新运行就可以了!
#2
你可以在datatable里面做。
#3
添加:
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);
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);
#4
保存的时候用foreach循环添加该table的数据到数据库
#5
BindingSource 是一个好用的功能代理,
有
EndEdit() / CancelEdit / AddNew
可以使用.
最终的操作还是过渡到数据源上,
直接对数据源修改也是可以的,
BindingSource 也能感知到(数据源必须能激发变动事件)修改,
同时反映的绑定的界面元素上,
其实真正的数据绑定能力还是来自底下的数据源,
BindingSource 只是一个一致性的数据绑定界面.
如果学习数据绑定, 可以参考 System.Data.DataView ,
DataTable 本身, 绑定能力有限.
有
EndEdit() / CancelEdit / AddNew
可以使用.
最终的操作还是过渡到数据源上,
直接对数据源修改也是可以的,
BindingSource 也能感知到(数据源必须能激发变动事件)修改,
同时反映的绑定的界面元素上,
其实真正的数据绑定能力还是来自底下的数据源,
BindingSource 只是一个一致性的数据绑定界面.
如果学习数据绑定, 可以参考 System.Data.DataView ,
DataTable 本身, 绑定能力有限.
#6
我现在已经把 dataTable绑定到 bindingSource,然后 DataGridView与bindingSource绑定在一起
现在我操作 dataGridView , 做了一引起数据的修改,但是怎样点击“取消”时,还原数据呢?
现在我操作 dataGridView , 做了一引起数据的修改,但是怎样点击“取消”时,还原数据呢?
#7
取消操作的 UI 部件需要你自己提供吧
按钮, 菜单都行,
点击后执行 BindingSource 的 CancelEdit()
那个 BindingNavigator 有没有撤销按钮, 忘记了, 记得好似没有.
按钮, 菜单都行,
点击后执行 BindingSource 的 CancelEdit()
那个 BindingNavigator 有没有撤销按钮, 忘记了, 记得好似没有.
#8
确实 BindingNavigator 没有撤销按钮,如果只能自己写的话,貌似很难。
#9
拖入 BindingNavigator , 看看生成的代码, 增加一个按钮不是难事
我就定制了一下, 使得 BindingNavigator 的 添加和删除操作可以取消
我就定制了一下, 使得 BindingNavigator 的 添加和删除操作可以取消
#10
没有提交到数据库前可以的。
#11
增加一个按钮当然不难,但是怎样实现他的功能?
#12
事件中
bindingNavigator1.BindingSource.CancelEdit();
bindingNavigator1.Refresh();
bindingNavigator1.BindingSource.CancelEdit();
bindingNavigator1.Refresh();
#13
CancelEdit只能取消对当前单元格的修改。
#14
如果硬要来,
bindingNavigator1.BindingSource.DataSource 是 DataTable 还是 DataSet,
拿到他们, 调用 DataTable , DataSet 的 RejectChanges()
不过这样就强类型化了, 终端业务应用这样干可以
Framework / toolkit 最好不要这样.
bindingNavigator1.BindingSource.DataSource 是 DataTable 还是 DataSet,
拿到他们, 调用 DataTable , DataSet 的 RejectChanges()
不过这样就强类型化了, 终端业务应用这样干可以
Framework / toolkit 最好不要这样.
#15
MSDN改版了,呵呵
刚才上去看到他对 Rejectchanges()的解释:
DataSet.RejectChanges 方法
回滚自创建 DataSet 以来或上次调用 DataSet.AcceptChanges 以来对其进行的所有更改。
我想这个应该就是我想要的了
Dobzhansky 您觉得最好不要用这个吗?
刚才上去看到他对 Rejectchanges()的解释:
DataSet.RejectChanges 方法
回滚自创建 DataSet 以来或上次调用 DataSet.AcceptChanges 以来对其进行的所有更改。
我想这个应该就是我想要的了
Dobzhansky 您觉得最好不要用这个吗?
#1
当然了,在后台把你的绑定函数重新运行就可以了!
#2
你可以在datatable里面做。
#3
添加:
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);
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);
#4
保存的时候用foreach循环添加该table的数据到数据库
#5
BindingSource 是一个好用的功能代理,
有
EndEdit() / CancelEdit / AddNew
可以使用.
最终的操作还是过渡到数据源上,
直接对数据源修改也是可以的,
BindingSource 也能感知到(数据源必须能激发变动事件)修改,
同时反映的绑定的界面元素上,
其实真正的数据绑定能力还是来自底下的数据源,
BindingSource 只是一个一致性的数据绑定界面.
如果学习数据绑定, 可以参考 System.Data.DataView ,
DataTable 本身, 绑定能力有限.
有
EndEdit() / CancelEdit / AddNew
可以使用.
最终的操作还是过渡到数据源上,
直接对数据源修改也是可以的,
BindingSource 也能感知到(数据源必须能激发变动事件)修改,
同时反映的绑定的界面元素上,
其实真正的数据绑定能力还是来自底下的数据源,
BindingSource 只是一个一致性的数据绑定界面.
如果学习数据绑定, 可以参考 System.Data.DataView ,
DataTable 本身, 绑定能力有限.
#6
我现在已经把 dataTable绑定到 bindingSource,然后 DataGridView与bindingSource绑定在一起
现在我操作 dataGridView , 做了一引起数据的修改,但是怎样点击“取消”时,还原数据呢?
现在我操作 dataGridView , 做了一引起数据的修改,但是怎样点击“取消”时,还原数据呢?
#7
取消操作的 UI 部件需要你自己提供吧
按钮, 菜单都行,
点击后执行 BindingSource 的 CancelEdit()
那个 BindingNavigator 有没有撤销按钮, 忘记了, 记得好似没有.
按钮, 菜单都行,
点击后执行 BindingSource 的 CancelEdit()
那个 BindingNavigator 有没有撤销按钮, 忘记了, 记得好似没有.
#8
确实 BindingNavigator 没有撤销按钮,如果只能自己写的话,貌似很难。
#9
拖入 BindingNavigator , 看看生成的代码, 增加一个按钮不是难事
我就定制了一下, 使得 BindingNavigator 的 添加和删除操作可以取消
我就定制了一下, 使得 BindingNavigator 的 添加和删除操作可以取消
#10
没有提交到数据库前可以的。
#11
增加一个按钮当然不难,但是怎样实现他的功能?
#12
事件中
bindingNavigator1.BindingSource.CancelEdit();
bindingNavigator1.Refresh();
bindingNavigator1.BindingSource.CancelEdit();
bindingNavigator1.Refresh();
#13
CancelEdit只能取消对当前单元格的修改。
#14
如果硬要来,
bindingNavigator1.BindingSource.DataSource 是 DataTable 还是 DataSet,
拿到他们, 调用 DataTable , DataSet 的 RejectChanges()
不过这样就强类型化了, 终端业务应用这样干可以
Framework / toolkit 最好不要这样.
bindingNavigator1.BindingSource.DataSource 是 DataTable 还是 DataSet,
拿到他们, 调用 DataTable , DataSet 的 RejectChanges()
不过这样就强类型化了, 终端业务应用这样干可以
Framework / toolkit 最好不要这样.
#15
MSDN改版了,呵呵
刚才上去看到他对 Rejectchanges()的解释:
DataSet.RejectChanges 方法
回滚自创建 DataSet 以来或上次调用 DataSet.AcceptChanges 以来对其进行的所有更改。
我想这个应该就是我想要的了
Dobzhansky 您觉得最好不要用这个吗?
刚才上去看到他对 Rejectchanges()的解释:
DataSet.RejectChanges 方法
回滚自创建 DataSet 以来或上次调用 DataSet.AcceptChanges 以来对其进行的所有更改。
我想这个应该就是我想要的了
Dobzhansky 您觉得最好不要用这个吗?