ASP.NET中的Gridview,肯定有更好的方法吗?

时间:2009-11-06 09:57:55

标签: asp.net gridview

他们似乎太讨厌了。

我有一个gridview,如果没有设置过滤器,它运行的查询会返回10,000个结果...并在第一页上显示10个结果。您按第2页,然后再次执行查询...再次...

有没有办法缓存它们?是不是有更简单的方法来引入所有结果然后过滤它们而不重复查询? ASP.NET必须与gridview展开斗争吗?

我很想知道是否有更好的方法...

4 个答案:

答案 0 :(得分:4)

您使用的是哪个网格? GridViews将绑定到任何实现IEnumerable的东西,所以你是否意识到你可以获取数据并自己明确绑定它?类似于:

List<myDataObjects> data = executeMyQuery();
gridview.DataSource = data;
gridView.DataBind();

通过这种方式,您可以控制何时获取数据,甚至可以根据需要对其进行缓存。

答案 1 :(得分:2)

如果您使用的是SQL Server 2005及更高版本,则可以在查询中使用ROW_NUMBER()函数,您可以使用该函数来分页在源文件中返回的行。

ScottGu使用DataList有一篇详细的博文here,但这同样适用于GridViews

This blog entryROW_NUMBER()

的细节进行了更简洁的介绍

答案 2 :(得分:0)

不要执行返回一个大结果集中所有内容的查询,而是考虑以分页方式返回结果。

您可以将结果放在ViewState中,但如果您有大量可以返回的数据,那么这是不可取的。

答案 3 :(得分:0)

使用转发器并创建查询以仅返回所需的结果。您的查询可能需要使用resultsPerPage和PageNumber的参数。

连接到这些数据集的网格视图适用于5分钟演示,但实际上不应该以生产代码结束。讨厌是好消息。