【发布时间】:2010-10-14 02:17:46
【问题描述】:
我的数据库中有一些表大约有 7K 行,我需要 使用自定义格式、数据透视表等详细信息在网站 (asp.net) 上制作报告。
什么是最好的解决方案,因为当我用这么多的数据渲染转发器时,它非常慢。
感谢您的建议
【问题讨论】:
标签: report large-data
我的数据库中有一些表大约有 7K 行,我需要 使用自定义格式、数据透视表等详细信息在网站 (asp.net) 上制作报告。
什么是最好的解决方案,因为当我用这么多的数据渲染转发器时,它非常慢。
感谢您的建议
【问题讨论】:
标签: report large-data
您可能想针对这么多数据尝试使用自定义报告工具。我公司做了一个工具叫RSinteract(无耻插件)。它使用 SQL Server 报告服务。
如果您只想转储数据。我认为浏览器在呈现该浏览器时或在查询运行时处于锁定状态。如果您知道您的目标浏览器是什么...您可以使用“更多...”链接来获取下一组数据并限制为 1000 行。但是,这会影响 Ctrl+F 搜索。类似于分页,但我猜是把责任交给了用户。
【讨论】:
我为一位客户使用 Dev Express 网格来处理报告,他们喜欢它(尽管我宁愿自己滚动!)
【讨论】:
您没有提及您使用的是哪种语言,但提及中继器暗示了 ASP.Net?根据我的经验,在较大的数据集上将数据绑定到 DataGrid 会更快。
但是,我想知道您为什么要在网页上显示这么多数据。没有一个头脑正常的用户会坐下来滚动浏览这么多数据并发现它很有用。将您的数据限制为对用户有用的相关数据 - 通常过滤到少于 100 行。
IMO,无论格式如何,包含这么多数据的报告都是无用的,但如果您绝对必须拥有所有这些数据来打印报告等,请考虑在服务器上生成 PDF 文档。
【讨论】:
关闭视图状态
除非你需要它
Page.EnableViewState = false;
分表
如果您不想沿着寻呼路线走下去,您也可以尝试将一个大的<table> 拆分成几个较小的<table>s。 (过去浏览器只能在看到最终的</table> 后才能呈现表格。我不确定这是否仍然正确,但绝对值得一试)
摆脱垃圾
确保您使用的是 css 而不是使用类似
的东西<td width="40" valign="top"> 50 </td>
<td class="a"> 50 </td> <!-- better -->
<td>50</td> <!-- best -->
<!-- if you need to specify a width, you only need to do it in one row -->
记住crap * 7000 = alot of crap
不惜一切代价减小页面大小
有时问题不是页面的渲染,而是下载导致问题,所以检查一下。
嵌套表真的会伤害你
努夫说
【讨论】:
如果您真的在为“网络应用”寻找“最佳”解决方案,我强烈建议您使用 Flash/Flex 来有效地呈现这么多行。如果不能使用基本 HTML 之外的任何内容,那么我建议在用户滚动时动态获取新行,如@mbeckish 建议的那样......
【讨论】:
考虑这样的典型行:
<tr><td>ID</td><td>Some data</td><td>More and more data</td></tr>
每行有 66 个字符,因此有 7k 行将汇总近 500k 的数据。这对于网络显示来说已经很多了。
因此,如果您真的想在一页中显示所有内容,请尽量减少:
无论如何,取决于目标计算机 + 浏览器,如果您的行更大,这可能会变得非常缓慢。
【讨论】:
如果您不想分页,那么您可能需要一些 AJAX 来在滚动时获取行,并可能在行滚动出视图时删除行,如果您需要节省内存。
【讨论】:
我建议使用分页。
【讨论】:
t want paging. Because users in desktop application use scrolling a lot and its 很舒服。所以滚动对我有好处:)