1

我有一个转发器,它需要 270 秒才能呈现,实际上最终导致所有浏览器崩溃。检索数据的 SQL 大约需要 10 秒。我想删除 Eval,看看这是否会加快速度,但我在使用正确的语法时遇到了麻烦。我怀疑这实际上会提高性能,因为我正在处理 150,000 条记录。GridView 或其他控件会更快吗?使用 LINQ to SQL 会提高性能吗?这是评估的代码:

<%#Eval("Name")%>

我在尝试:

<%# ((DataRowView)Container.DataItem)["Name"]%>

但以上不起作用。它说 DataRowView 不能用作表达式

我还要指出,不涉及分页。

4

1 回答 1

1

使用其中一个EvalContainer.DataItem不会有所作为,因为它们是同一件事。请看一下这个SO

如果您的浏览器在显示数据时崩溃,那是因为在浏览器中呈现了太多生成的 html 或 javascript。请注意,这Eval是在服务器端执行的,因此它不是浏览器崩溃的根本原因。

我建议使用分页来提高性能并避免崩溃。如果你真的不能使用分页,让用户下载 csv 文件以在 excel 甚至 PDF 文件中打开怎么样?

至于使用 Linq to SQL 来提高性能,我假设您将它与存储过程或动态 sql 进行比较?存储过程将始终为您提供最佳性能,但是一旦您的动态 sql 或 linq 表达式(或编译的 linq)被缓存在 sql server 中,它们与 sproc 相比并没有那么慢。

于 2012-06-02T07:14:55.753 回答