减少ViewState的办法可以大大加快客户端的下载显示速度但是频繁的数据库访问将加大服务器的压力使用ViewState可以减轻服务器的压力但是又加大了客户端的下载时间它们是互相矛盾的 DataGrid保存在ViewState中的数据分为两个部分一部分是保存索引用的就是DataKeys和DataItems这样的属性使用的数据我们把它称之为索引数据还有一部分是DataGrid中数据源的内容我们称之为列表数据 如果把实际上无用的列表数据从ViewState中去除这样可以大大减小页面ViewState的数据大小使用DataGrid时ViewState数据量太大的根本原因就是列表数据存放在ViewState中 在数据绑定的时候设置DataGrid中DataGridTable控件的EnableViewState属性为False就可以了 首先在页面初始化中的InitializeComponent()方法内加入事件的委托 private void InitializeComponent() { thismyDataGridItemDataBound += new DataGridItemEventHandler(thismyDataGrid_ItemDataBound); } 然后在myDataGrid_ItemDataBound方法内加入控制代码 private void myDataGrid_ItemDataBound(object sender DataGridItemEventArgs e) { myDataGridControls[]EnableViewState = false; } 其实自认为最好的方法应该是 用自定义分页加之存储过程每次让DataGrid绑定少量的数据维持其ViewState扩展他的功能 |