ASP.net GridView的ViewStates

时间:2009-07-09 07:39:37

标签: asp.net gridview viewstate

我正在使用Gridview来保存记录,用户可以单击每个记录中的复选框以指示他/她想要保存该记录(在编辑数据之后),并且用户可以根据需要选择尽可能多的记录。立即保存它们。

在后面的代码中,我将循环遍历gridview并查找用于保存记录的复选框。如果我禁用Gridview的视图状态。我无法循环它,但如果我启用了gridview的viewstate,那么gridview视图状态可以高达1mb甚至更高。

减少此girdview控件上viewstate的最佳方法是什么,或者我的方法是错误的?

3 个答案:

答案 0 :(得分:1)

如果无法缩小视图状态的大小,可以尝试其他解决方案。您可以将viewstate存储在服务器上。这篇博客文章展示了如何实现这个目标:

Reducing the page size by storing ViewState on Server

我在一个拥有庞大视图状态的页面上实现了类似的功能,并且效果很好。我会尝试优化视图状态,然后再转到类似的东西,因为它会产生一些开销。

我认为我使用过这篇文章(已经有一段时间了)并且必须为SQL修改它,因为它使用了文件系统: Persisting View State to the File System

答案 1 :(得分:1)

如果您对此想法持开放态度,可能需要考虑实施自定义分页以减少返回的记录数。也许从默认分页开始,但返回所有记录。如果你想要更好的性能,那么自定义分页就是你的选择。

一些有用的材料:

  1. Efficiently Paging Through Large Amounts of Data

  2. GridView ObjectDataSource LINQ Paging and Sorting

  3. Improve GridView Performance by Delegating Paging to SQL Server

答案 2 :(得分:0)

我同意Alex的观点。您还可以使用临时表来保存数据。我在一个项目中使用了这个场景,它运行正常。您也可以使用缓存,但是再次将负载放在Web服务器上(除非您有某种分布式缓存)。