winform数据临时保存及校验有关问题
winform数据临时保存及校验问题
用户要求如下:
1、对某种商品的条码格式进行检验,不通过检验的不能扫描下一个条码;
比如:格式限制为PT**,扫描出的条码是WT**则警告;
2、要可以任意更换录入,比如A商品的10个条码只录入了7个,现在又想录B商品的20个条码,B商品的条码录了10个,TA又不录完B商品,换录C商品的22个条码,但最后全部条码都要录完。
我目前实现的是:在DataGridView1中录入商品类型、数量、条码格式,然后双击行标头处,如果该行数量列处为10就在DataGridView2中添加10行,DataGridView2中扫描的数据检验格式要符合DataGridView1中对应行处的条码格式,但是不能没录完一种商品就录下一种商品。

好吧,说得太啰嗦了,不知道你们看懂了没?
现在遇到的问题是:怎么实现用户的第二个要求,没录完可以录其他商品,并且已录的不需要再重新录入。没有思路了,请各路大神不吝赐教,谢谢啦!
------解决思路----------------------
可以使用HASHTABLE暂存。
------解决思路----------------------
其实就是临时数据储存的问题,放到dataTable里。 更换录入这跟 顺序有关系么? 你录入什么就在 dgv里显示什么就行了。在显示之前 查询datatable里是否包含,包含就不允许录入;不包含就录入。 至于录入不录入完毕,就看你们怎么设计了。
------解决思路----------------------
如果你用表格来存,就遍历一下,如果没有,就新增一行,如果有,就累加进去,不就得了
其实用字典存放会更好一些,不过考虑到主要是为了显示,还是遍历表格吧.
------解决思路----------------------
可以在datagridview1中录完一个商品就生成一个DataTable,然后你需要录哪一个商品的条码就把对应的DataTable设为dagagridview2的datasource,应该能够实现要求吧
------解决思路----------------------
这个问题没难度啊,在以前,用DataSet就实现了,DataSet离线存储数据,你的临时数据自然就保存下来了,而且DataSet是带主外键功能的,可以支持主从表,一个主表多个从表。同时关闭窗口时也需要保存下来的话,记得在关闭事件里写存数据库的动作即可。
------解决思路----------------------
方法很多,看你用的什么对象来绑定这个视图的,一般常用的有DataTable和List<T>。有关DataSet、DataTable的各种操作,网上都有介绍,视图一旦绑定了DataTable,就会同步将视图的内容反映到DataTable对象中,你也可以手动修改DataTable内容后重新绑定,不过建议直接用视图提供的方法操作,所有改动都不会提交到数据库,这个要自己写SQL来更新数据库(也有自动的方法,不推荐)。如果用List<T>,需要自行构造字典类来维护多个List<T>之间的关系,这一般用在ORM的框架中。
用户要求如下:
1、对某种商品的条码格式进行检验,不通过检验的不能扫描下一个条码;
比如:格式限制为PT**,扫描出的条码是WT**则警告;
2、要可以任意更换录入,比如A商品的10个条码只录入了7个,现在又想录B商品的20个条码,B商品的条码录了10个,TA又不录完B商品,换录C商品的22个条码,但最后全部条码都要录完。
我目前实现的是:在DataGridView1中录入商品类型、数量、条码格式,然后双击行标头处,如果该行数量列处为10就在DataGridView2中添加10行,DataGridView2中扫描的数据检验格式要符合DataGridView1中对应行处的条码格式,但是不能没录完一种商品就录下一种商品。
好吧,说得太啰嗦了,不知道你们看懂了没?
现在遇到的问题是:怎么实现用户的第二个要求,没录完可以录其他商品,并且已录的不需要再重新录入。没有思路了,请各路大神不吝赐教,谢谢啦!
------解决思路----------------------
可以使用HASHTABLE暂存。
------解决思路----------------------
其实就是临时数据储存的问题,放到dataTable里。 更换录入这跟 顺序有关系么? 你录入什么就在 dgv里显示什么就行了。在显示之前 查询datatable里是否包含,包含就不允许录入;不包含就录入。 至于录入不录入完毕,就看你们怎么设计了。
------解决思路----------------------
如果你用表格来存,就遍历一下,如果没有,就新增一行,如果有,就累加进去,不就得了
其实用字典存放会更好一些,不过考虑到主要是为了显示,还是遍历表格吧.
------解决思路----------------------
可以在datagridview1中录完一个商品就生成一个DataTable,然后你需要录哪一个商品的条码就把对应的DataTable设为dagagridview2的datasource,应该能够实现要求吧
------解决思路----------------------
这个问题没难度啊,在以前,用DataSet就实现了,DataSet离线存储数据,你的临时数据自然就保存下来了,而且DataSet是带主外键功能的,可以支持主从表,一个主表多个从表。同时关闭窗口时也需要保存下来的话,记得在关闭事件里写存数据库的动作即可。
------解决思路----------------------
方法很多,看你用的什么对象来绑定这个视图的,一般常用的有DataTable和List<T>。有关DataSet、DataTable的各种操作,网上都有介绍,视图一旦绑定了DataTable,就会同步将视图的内容反映到DataTable对象中,你也可以手动修改DataTable内容后重新绑定,不过建议直接用视图提供的方法操作,所有改动都不会提交到数据库,这个要自己写SQL来更新数据库(也有自动的方法,不推荐)。如果用List<T>,需要自行构造字典类来维护多个List<T>之间的关系,这一般用在ORM的框架中。