第 3 方 Silverlight 网格控制

发布于 2024-10-07 14:06:11 字数 402 浏览 0 评论 0原文

我们正在经历为 Silverlight 4.0 选择第三方控件套件的过程。我们最感兴趣的是功能丰富的网格控件。我惊讶地发现大多数产品都专注于客户端分页、过滤、排序和分组。但是,如果数据集足够大以从这些函数中受益,那么是否也太大而无法在一次调用中带给客户端?这难道不会使得大多数广告宣传的精美网格功能变得毫无用处吗?在我看来,200 行数据是我在一次请求中向服务器请求的数据量的理想上限。然而,Telerik、DevExpress、ComponentOne、Xceed 和其他网站都有精彩的演示,将 10,000 多行数据带到客户端,并展示对其进行分页、过滤、分组和排序的能力。谁给客户端带来了一万多行数据?如果您有 1,000 个并发用户怎么办?如果该数据不稳定怎么办?这真正解决了什么用例?

您能分享一下您使用这些控制套件的经验以及您是否实现了分页吗?另外你是否使用RIA?

We are going through a process of selecting a 3rd party suite of controls for Silverlight 4.0. We're mostly interested in a feature-rich grid control. I'm surprised to find that most of the products out there focus on client side paging, filtering, sorting, and grouping. But if the dataset is large enough to benefit from these functions isn't also too big to bring to the client in one call? And doesn't this make most of the advertised fancy grid features useless? In my opinion 200 rows of data is ideal upper limit on how much I'd request from the server in one request. Yet the sites for Telerik, DevExpress, ComponentOne, Xceed, and others all have fancy demos that bring 10,000+ rows of data to the client and show off the ability to page, filter, group, and sort it. Who brings 10,000+ rows of data to the client? What if you have 1,000s of concurrent users? What if that data is volatile? What use-case does this really address?

Can you share your experiences with any of these control suites and whether you've implemented paging? Also whether you are using RIA?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

傾城如夢未必闌珊 2024-10-14 14:06:11

您不需要第三方网格控件来实现服务器端分页。可以使用silverlight工具包提供的网格控件和ObjectDataSource http://silverlight.codeplex.com/

http://borrell.parivedasolutions.com/2008/01/objectdatasource-linq -分页排序.html

You don't need a third party Grid control to achieve server side paging. You can use the grid control and ObjectDataSource provided by silverlight toolkit http://silverlight.codeplex.com/

http://borrell.parivedasolutions.com/2008/01/objectdatasource-linq-paging-sorting.html

∞梦里开花 2024-10-14 14:06:11

我同意你的观点,对于客户来说,想要同时查看他们全年的数据可能是疯狂的,但有时客户(和产品经理)不会以与你相同的方式看待事物并坚持要求做愚蠢的事情......

无论如何,仅仅因为演示分页了 100 万条记录,并不意味着他们将所有记录都带到了客户端。您还必须考虑这样一种情况:您有 200 行数据,但由于您使用的数据模板,一次只能显示 10 行(一个页面可能只能容纳 10 行) - 您仍然可以检索所有数据200 行,因为只是您的演示文稿占用了物理空间。您还可以实现分页并在请求时检索下一页的数据(这会带来一点延迟,但非常值得)。解决这个问题的最佳方法可能是不让用户能够一次检索数以百万计的记录 - 如果您向他们提供该功能,他们使用它,然后他们还会抱怨其性能。

至于快速客户端排序/分组/过滤,这是现实世界的必需品。我们的用户通常从服务器获取数千条记录,然后使用过滤器(我已扩展)一次查看少量记录,对这些记录进行操作,然后修改过滤器以查看不同的记录。让这些功能快速运行非常重要,因为它会对用户体验产生巨大的影响。今年早些时候,我尝试了几种不同的组件集,发现它们在这些功能方面的性能存在巨大差异,因此请明智地选择:)

I agree with you, it can be crazy for a client to want to view their entire years worth of data all at the same time, but sometimes the client (and product managers) don't see things the same way you do and insist upon doing stupid things....

In any case, just because the demo is paging through 1 million records that doesn't mean they are bringing them all to the client. You also have to consider the scenario where you have 200 rows worth of data but you can only show 10 rows at a time due to the data templates you are using (you may only fit 10 rows to a page) - you can still retrieve all 200 rows because it is simply your presentation that is using up the physical room. You can also implement paging and retrieve the next page worth of data when it is requested (which will introduce a small delay, but could be well worth it). Possibly the best way to deal with this is to not give the user the ability to retrieve squillions of records at once - if you give them that feature they will use it and then they will also complain about its performance.

As for fast client side sorting/grouping/filtering, that is a real world necessity. It is common for our users to fetch many thousands of records from the server, then use the filters (which i have extended) to view a handful of records at a time, operate on those records, then modify the filters to view a different bunch. It is important to have these functions working fast because it makes a huge difference to the user experience. I trialled several different component sets earlier this year and found there was a vast difference in the performance between them when it came to these functions, so choose wisely :)

菊凝晚露 2024-10-14 14:06:11

我希望看到一个控制套件能够处理订单履行的并发问题,并且还使用队列或堆栈来解决数据冲突。我经常看到这种网格和列表控件非常好,漂亮,并且向您显示所有数据,但是当您有多个人处理同一组数据时,它们不能解决基本的并发问题。如果它能够自动锁定一个用户的一行,防止重复工作,并自动记录错误消息,那么我就可以购买控制套件。

I'd like to see a control suite that boast working with concurrency issues on order fullfullment and also uses queues or stacks in order to solve data conflicts. I see too often that this grids and list controls are really nice, pretty, and show you all the data, but they don't solve basic concurreny problems when you have more than one person working on the same set of data. If it automates the locking of a row of one user from another, prevents duplication of work, and automatically logs error messages, then I can see purchasing the control suite.

冰雪梦之恋 2024-10-14 14:06:11

您不需要立即加载所有数据,您可以在 ObjectDataSource 的 xaml 中指定最大加载量。这将以指定大小的块加载数据。
请在此处观看 2 个 RIA 服务视频:
https://www.silverlight.net/getstarted/riaservices/

寻呼上有一些片段可能对你也有用。

注意(自这些视频制作以来,一些程序集引用和语法已略有更改,但核心功能仍然相同)

You don't need to load all your data at once you can specify a maximum load in the xaml of your ObjectDataSource. This will load your data in blocks of the specified size.
Take a look at the 2 RIA services videos here:
https://www.silverlight.net/getstarted/riaservices/

There are segments on paging which may also be useful to you.

note(some of the assembly references and syntax have changed slightly since these videos were made but the core function is still the same)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文