首页 新闻 会员 周边 捐助

c# 刷新问题

0
悬赏园豆:5 [已解决问题] 解决于 2015-02-12 15:01

在一个页面。存在一个按钮和一个列表、点击按钮。弹出窗体、窗体显示的数据也就是列表的数据。也就是说窗体也是一个grid还存在一个按钮。可以对这个窗体列表做修改、但只是操作缓存的数据。需点击弹出窗体的按钮才进行更改的操作。假如我第一次点击弹出窗体。修改了值。没有操作数据库、把窗体关闭。再次弹出,他获取的是修改了的值。我需要获取最新数据。假如原始数据100.我做修改成10.关闭窗体再次弹出时。我需要取100.而不是10

小二炒豆芽菜的主页 小二炒豆芽菜 | 菜鸟二级 | 园豆:418
提问于:2015-02-11 09:33
< >
分享
最佳答案
0

你的逻辑乱了

数据应该分原始数据(不管来源是缓存还是数据库)和临时数据

这两个本身就不能混在一起,加载时取得是原始数据,而被操作的应该是临时数据。当确定要更改时才把临时数据变成原始数据

收获园豆:3
nicky0227 | 小虾三级 |园豆:1069 | 2015-02-11 11:59

是啊。我点击减免的时候才操作原始数据。在每行数据修改后有个保存。这个保存则是操作临时数据。当我没操作减免时。弹出窗体关闭。再次进入弹出窗体应该取的是原始数据,而不是临时数据

小二炒豆芽菜 | 园豆:418 (菜鸟二级) | 2015-02-12 14:08

@我二我快乐: 从你的描述里没有看出你区分了"原始数据"和"临时数据"这两个概念。你指的原始数据到底是数据库还是缓存,而你所指的临时数据又是什么,在哪里?还有保存按钮里的逻辑是你自己实现的吗

nicky0227 | 园豆:1069 (小虾三级) | 2015-02-12 14:13

@nicky0227: 我的弹出窗体绑定是临时数据。我的原始数据时数据库里的。临时数据是缓存数据。我不知道这样理解正确吗。能帮我讲解下吗。谢谢你

小二炒豆芽菜 | 园豆:418 (菜鸟二级) | 2015-02-12 14:18

@我二我快乐: 

这么说你的原始数据就是数据库,你的临时数据就是缓存(Session)

1.在这个前提下那你无论什么时候弹出窗体,窗体在弹出时绑定的应该都是再从数据库取的数据(除非你不动Session),为什么还要从Session里面去取呢?因为你点保存的时候会导致Session变化啊

2.或者你把Session["ds"] as DataSet 这里修改下,用一个新的DataSet去复制原来的DataSet,总之就是不要直接操作Session了,而去操作一个新对象

nicky0227 | 园豆:1069 (小虾三级) | 2015-02-12 14:28

@nicky0227: 减免操作的时候需要取到session值。如果不取seesion值得话,每次取得都是原始数据。直接减掉原始数据。你说用克隆对吗

小二炒豆芽菜 | 园豆:418 (菜鸟二级) | 2015-02-12 14:34

@我二我快乐: 楼上 大叔也说了的,你要保证你的原始数据的纯洁性,在一切更改还没有确定的情况下,原始数据不要动,如果你必须要动Seesion,那就要么再克隆一个出来,要么每次进入弹出窗体时从数据库取值,你要明白对象都是引用类型的,Session也不例外,你在表格里的修改同时也改变了Session

nicky0227 | 园豆:1069 (小虾三级) | 2015-02-12 14:39

@nicky0227: 关闭弹出窗体时、后台事件不触发、我的代码量不足。不知道怎么处理了。后面解决是用克隆、谢谢你们。

小二炒豆芽菜 | 园豆:418 (菜鸟二级) | 2015-02-12 15:01
其他回答(2)
0

你这是逻辑不清楚造成的。

1、假设有一个变量或者对象 Person

2、打开一个窗口,修改后,可能希望保存,可能不希望保存,如何保证Person的纯洁性?

3、var newPerson=Person.clone

4、操作newPerson

5、保存时,遍历newPerson的属性,写回Person,不保存,则啥事都不用干。

6、至于数据不数据库,那与此无关。

收获园豆:2
爱编程的大叔 | 园豆:30844 (高人七级) | 2015-02-11 10:57

我操作的是缓存。不是源数据,需要操作减免按钮时。我的数据才做改变

支持(0) 反对(0) 小二炒豆芽菜 | 园豆:418 (菜鸟二级) | 2015-02-11 11:31

@媛媛HY: 请你仔细看我说的。

这个跟缓不缓存没有关系,跟源不源数据也没有关系。

这个就是当你想要提供保存与不保存数据时的技巧。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2015-02-11 12:04

@爱编程的大叔: 恩恩。我操作的是临时数据。只有操作减免时,才操作原始数据。现在我关闭窗体。再次进入窗体时需要取到原始数据。而不是临时数据

支持(0) 反对(0) 小二炒豆芽菜 | 园豆:418 (菜鸟二级) | 2015-02-12 14:10
0

弹窗的时候再次读取数据库的最新数据。

KingMi | 园豆:1344 (小虾三级) | 2015-02-11 11:46

我关闭时。在批量减免时。后台代码不执行了。本来想在前台刷新。可一刷。数据都不绑值了

支持(0) 反对(0) 小二炒豆芽菜 | 园豆:418 (菜鸟二级) | 2015-02-11 11:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册