在WPF中维护Business Objects列表的最佳方法

时间:2010-12-13 13:53:05

标签: .net wpf wcf

所以这个问题不是技术问题,而是更具概念性。

我有一些asp.net的经验,但刚开始使用WPF和WCF服务(在winforms中没有任何经验)。说我需要维护这个Business Objects列表。我在想2个解决方案:

  1. 我将网格绑定到我的对象列表,并允许用户在用户更改网格中的焦点线时,如果没有验证错误,则编辑提交对象的对象。如果存在验证错误,则用户无法更改聚焦线。

  2. 允许用户自由编辑对象列表,并通过保存按钮提交整个集合,对这些对象进行批量更新。只有在网格中没有发生验证错误时才可以进行提交。验证问题在网格上发出信号,用户可以自由更改聚焦行。

  3. 这样做的标准(最佳)方式是什么?欢迎任何其他建议。

    提前致谢

    PS:请注意,数据源不是WCF服务托管在Web服务器中的应用程序的本地。

3 个答案:

答案 0 :(得分:1)

这实际上取决于很多事情,但是既然你提到了WCF服务,我假设你有一个数据源,它通过你的服务接口暴露给多个客户端(对吧?)。在这种情况下,您可能希望最小化网络流量,因此我建议采用批量更新方法。否则,您将为任何用户进行的每次更改进行服务调用。

如果用户拥有本地数据源,您可能需要考虑第一种方法,因为这样可以最大限度地减少数据丢失的可能性,因为每次更改都会提交给数据源。

此外,您可能希望查看WPF datagrid内置验证功能: http://msdn.microsoft.com/en-us/library/ee622975.aspx

答案 1 :(得分:1)

我不会说这里有一个具体的“标准”。您使用的方法在很大程度上取决于许多因素。

  1. 什么是用户群?是否有很高的并发编辑潜力,按记录保存记录有助于减少冲突的可能性?
  2. 从用户的角度来看效率最高的是,他们是否需要“大规模编辑”,或者让他们在继续之前让每一个都正确
  3. 如果您进行大规模编辑,如果用户计算机出现故障或者某些原因导致应用程序死亡,您会怎么做?

答案 2 :(得分:1)

我认为如果你实现了一个网格原型,在你修复当前行中的验证错误之前不会让你专注于一个新行,你会惊讶地发现使用它的令人难以置信的刺激性是。

您还没有提到第三种方法,即更新验证并允许用户将行保留为无效状态。只要UI非常清楚行是否有效,用户就不会混淆他的编辑是否已经提交给数据源。