他们似乎太讨厌了。
我有一个gridview,如果没有设置过滤器,它运行的查询会返回10,000个结果...并在第一页上显示10个结果。您按第2页,然后再次执行查询...再次...
有没有办法缓存它们?是不是有更简单的方法来引入所有结果然后过滤它们而不重复查询? ASP.NET必须与gridview展开斗争吗?
我很想知道是否有更好的方法...
答案 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 entry对ROW_NUMBER()
答案 2 :(得分:0)
不要执行返回一个大结果集中所有内容的查询,而是考虑以分页方式返回结果。
您可以将结果放在ViewState中,但如果您有大量可以返回的数据,那么这是不可取的。
答案 3 :(得分:0)
使用转发器并创建查询以仅返回所需的结果。您的查询可能需要使用resultsPerPage和PageNumber的参数。
连接到这些数据集的网格视图适用于5分钟演示,但实际上不应该以生产代码结束。讨厌是好消息。