我有这个GUI显示,让我们说客户订单。当我的客户确定要求时,他要求我保持这样的分页,
每页显示的项目:10/50/150
对于每个客户,可能有数千个订单,每个订单将至少有50个属性显示在屏幕上。因此,假设一个50列html表,其中包含2000或3000个与之关联的记录,跨越多个数据库表(无论如何,这是一个不同的故事)
直到昨天,事情变得轻而易举,现在我的客户已经提出了新的变更请求,因为他指定了这样的Show Items,
每页显示的项目:10/50/150 / 全部
是的,他只想选择“全部”选项即可查看2000或3000条记录。在内部,这不是一个很大的改变,我会回去删除我在rowcount等上应用的过滤器,但是当它加载到GUI时它确实糟透了......视图状态很大等等,
我知道,这是一个标准问题。你们怎么处理它?我不能说服我的客户删除这个“全部”选项,他坚持下去。 (原因很简单,他有一个42英寸的大屏幕,他可以在一个页面上轻松看到1000个项目)
我还尝试使用javacript在ajax调用中准备DOM ..但是,插入2000个TD仍然很慢。
非常感谢任何帮助。
一些额外信息
答案 0 :(得分:3)
此问题与浏览器性能有关
我想你可以做两件事
1)您可以使用<div>
而不是<table>
(这可以使用CSS),因为浏览器在关闭标记之前不会呈现表格。因此加载页面需要很长时间,但它会更快地呈现第一个结果
2)如果你使用Ajax + Json并逐个渲染每个<tr>
,你可以渲染整个东西而不是把它放在DOM中。这会更快,因为每次放入另一行时浏览器都不会渲染
答案 1 :(得分:2)
如果您愿意,可以按分期付款方式加载数据。有点像分页是如何工作的,但准确的说并不是很划分。您可以使用正确的ID标记分期付款/页面。通过ajax调用一个接一个地加载页面。您甚至可以显示进度条以显示实际加载的数据量。将此数据附加到您正在显示数据的表中。我不会为此使用服务器控件...您必须通过javascript或jquery处理此问题。
答案 2 :(得分:1)
您可能希望以递增方式追加表格行 当客户端滚动到页面底部 - 触发ajax调用时,返回下一页并呈现它。
但最好的解决方案是说服您的客户 - 这不是Web应用程序的工作方式。我们有类似的情况 - 纯粹的噩梦。
答案 3 :(得分:0)
您最好使用DataRepeater而不是ASP.NET GridView。 更好的是,如果您不受技术限制,可以将Microsoft Ajax Preview 4与WCF REST Services一起使用。您只需要找到一些黑客来“流”来自服务的数据并显示它。 还有JQuery Grid(如果你不想使用Microsoft Ajax Preview 4)支持JSON序列化。