第 3 方 Silverlight 网格控制
Posted
技术标签:
【中文标题】第 3 方 Silverlight 网格控制【英文标题】:3rd Party Silverlight Grid Control 【发布时间】:2011-05-24 23:08:27 【问题描述】:我们正在为 Silverlight 4.0 选择第三方控件套件的过程。我们最感兴趣的是功能丰富的网格控件。我惊讶地发现大多数产品都专注于客户端分页、过滤、排序和分组。但是,如果数据集足够大,可以从这些功能中受益,是不是也太大而不能一次调用给客户端?这难道不会使大多数宣传的花哨的网格功能变得无用吗?在我看来,200 行数据是我在一个请求中从服务器请求多少的理想上限。然而,Telerik、DevExpress、ComponentOne、Xceed 和其他网站都有精美的演示,它们为客户端带来了 10,000 多行数据,并展示了对其进行分页、过滤、分组和排序的能力。谁给客户带来了 10,000+ 行数据?如果您有 1,000 多个并发用户怎么办?如果该数据不稳定怎么办?这真正解决了什么用例?
您能否分享您使用这些控制套件的经验以及您是否实现了分页?还有你是否使用 RIA?
谢谢。
【问题讨论】:
【参考方案1】:您不需要第三方网格控件来实现服务器端分页。可以使用silverlight工具包http://silverlight.codeplex.com/提供的网格控件和ObjectDataSource@
http://borrell.parivedasolutions.com/2008/01/objectdatasource-linq-paging-sorting.html
【讨论】:
嗨,戴维塔。这几乎就是我们发现的。但是套件套件提供了出色的用户界面——我不想花很多时间在上面。现在我们正在尝试让所有这些漂亮的过滤器、排序、分组和分页控件往返于服务器,这有点痛苦......【参考方案2】:我同意你的观点,客户想要同时查看他们全年的数据可能很疯狂,但有时客户(和产品经理)看事情的方式与你不同并坚持做愚蠢的事情......
无论如何,仅仅因为演示正在对 100 万条记录进行分页,并不意味着它们会将它们全部提供给客户端。您还必须考虑您有 200 行数据但由于您使用的数据模板一次只能显示 10 行的情况(您可能只适合一个页面 10 行) - 您仍然可以检索所有200 行,因为它只是您的 演示文稿 占用了物理空间。您还可以实现分页并在请求时检索下一页的数据(这将引入一个小的延迟,但可能非常值得)。处理这个问题的最好方法可能是不给用户一次检索大量记录的能力——如果你给他们这个功能,他们会使用它,然后他们也会抱怨它的性能.
至于快速的客户端排序/分组/过滤,这是现实世界的必需品。我们的用户通常从服务器获取数千条记录,然后使用过滤器(我已经扩展)一次查看少量记录,对这些记录进行操作,然后修改过滤器以查看不同的一堆.让这些功能快速运行很重要,因为它会对用户体验产生巨大影响。今年早些时候我试用了几个不同的组件集,发现在这些功能方面它们之间的性能存在巨大差异,所以要明智地选择:)
【讨论】:
我看到的示例确实似乎将所有内容加载到客户端。是的,一旦初始加载完成,您可以非常快......但在某些时候,初始加载的成本将超过收益。我很高兴听到您从您所做的研究中获得的任何建议/评论。到目前为止,我们已经研究了 Telerik、DevExpress 和 Xceed。 Xceeds 演示 - 当它工作时 - 似乎进行服务器端分页。没有其他人做过。但是 Telerik 和 DevExpress 更好看……【参考方案3】:我希望看到一个控制套件能够处理订单履行时的并发问题,并且还使用队列或堆栈来解决数据冲突。我经常看到这些网格和列表控件非常好、漂亮,可以向您显示所有数据,但是当您有多个人处理同一组数据时,它们并不能解决基本的并发问题。如果它自动锁定一个用户的一行,防止重复工作,并自动记录错误消息,那么我可以购买控制套件。
【讨论】:
【参考方案4】:您不需要一次加载所有数据,您可以在 ObjectDataSource 的 xaml 中指定最大负载。这会将您的数据加载到指定大小的块中。 在此处查看 2 个 RIA 服务视频: https://www.silverlight.net/getstarted/riaservices/
分页中的某些片段也可能对您有用。
注意(在制作这些视频后,一些程序集引用和语法略有变化,但核心功能仍然相同)
【讨论】:
以上是关于第 3 方 Silverlight 网格控制的主要内容,如果未能解决你的问题,请参考以下文章
带有自动边距的网格 - Windows Phone 8.1 Silverlight