所以这个问题不是技术问题,而是更具概念性。
我有一些asp.net的经验,但刚开始使用WPF和WCF服务(在winforms中没有任何经验)。说我需要维护这个Business Objects列表。我在想2个解决方案:
我将网格绑定到我的对象列表,并允许用户在用户更改网格中的焦点线时,如果没有验证错误,则编辑提交对象的对象。如果存在验证错误,则用户无法更改聚焦线。
允许用户自由编辑对象列表,并通过保存按钮提交整个集合,对这些对象进行批量更新。只有在网格中没有发生验证错误时才可以进行提交。验证问题在网格上发出信号,用户可以自由更改聚焦行。
这样做的标准(最佳)方式是什么?欢迎任何其他建议。
提前致谢
PS:请注意,数据源不是WCF服务托管在Web服务器中的应用程序的本地。
答案 0 :(得分:1)
这实际上取决于很多事情,但是既然你提到了WCF服务,我假设你有一个数据源,它通过你的服务接口暴露给多个客户端(对吧?)。在这种情况下,您可能希望最小化网络流量,因此我建议采用批量更新方法。否则,您将为任何用户进行的每次更改进行服务调用。
如果用户拥有本地数据源,您可能需要考虑第一种方法,因为这样可以最大限度地减少数据丢失的可能性,因为每次更改都会提交给数据源。
此外,您可能希望查看WPF datagrid内置验证功能: http://msdn.microsoft.com/en-us/library/ee622975.aspx
答案 1 :(得分:1)
我不会说这里有一个具体的“标准”。您使用的方法在很大程度上取决于许多因素。
答案 2 :(得分:1)
我认为如果你实现了一个网格原型,在你修复当前行中的验证错误之前不会让你专注于一个新行,你会惊讶地发现使用它的令人难以置信的刺激性是。
您还没有提到第三种方法,即更新验证并允许用户将行保留为无效状态。只要UI非常清楚行是否有效,用户就不会混淆他的编辑是否已经提交给数据源。