代码之家  ›  专栏  ›  技术社区  ›  Jack

ASP.NET GridView的视图状态

  •  1
  • Jack  · 技术社区  · 16 年前

    我使用gridview保存记录,用户可以单击每个记录中的复选框,指示他/她要保存该记录(在编辑数据之后),用户可以选择任意多的记录,并一次保存所有记录。

    在后面的代码中,我将循环使用gridview并查找复选框来保存记录。如果我禁用gridview的视图状态。我不能循环它,但是如果我启用了gridview的view state,那么gridview的viewstate可以高达1MB甚至更高。

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

    3 回复  |  直到 16 年前
        1
  •  1
  •   Alex    16 年前

    如果不能减小viewstate的大小,可以尝试其他解决方案。您可以将viewstate存储在服务器上。这篇博客文章展示了如何实现这一点:

    Reducing the page size by storing ViewState on Server

    我在一个拥有巨大视图状态的页面上实现了类似的功能,效果非常好。在转移到这样的地方之前,我会尝试优化viewstate,因为它会产生一些开销。

    我想我使用了这篇文章(已经有一段时间了),并且不得不修改它的sql,因为它使用了文件系统: Persisting View State to the File System

        2
  •  1
  •   Ahmad Mageed    16 年前

    如果您接受这个想法,那么您可能需要考虑实现自定义分页以减少返回的记录数。可能从默认分页开始,但这将返回所有记录。如果您想要更好的性能,自定义分页是一种方法。

    一些有用的材料:

    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

        3
  •  0
  •   Saif Khan    16 年前

    我同意亚历克斯的观点。您还可以使用一个临时表来保存数据。我在一个项目中使用了这个场景,效果很好。您也可以使用缓存,但这同样会给web服务器带来负载(除非您有某种分布式缓存)。