今天在调试系统的时候才发现,在实现搜索功能的时候,你若将搜索结果放到一个DataGrid中,若DataGrid出现了分页的情况,而你还是按照一般情况(从数据库中或XML中检索出数据,再对DataGrid进行绑定),那结果就会和你自己想象的不一样。
原因:在你触发DataGrid的PageIndexChanged事件时,DataGrid的数据源还是重新从数据库中检索出来的,而实际上呢,DataGrid的数据源因该是你搜索出来的结果集。
解决办法呢,就是在搜索出结果的时候,你需要把数据源存放到一个Session里面,然后在对DataGrid绑定的时候,你就需要将DataGrid的数据源设置成搜索出来的结果集的数据源,这样的话,你在触发分页事件后,他的结果才会和你想象的一样。
在这还有一个问题就是,如何处理对不是搜索结果的结果集,即你没有搜索的时候,需要将数据绑定到DataGrid中。
这样可按如下办法解决:你把数据集直接都存放在一个Session中,即在页面加载的时候,你就将数据集存放在Session中,而在搜索的时候,你就简单得修改Session值,这样的话,在DataGrid绑定的时候,你就可以统一用该Session作为数据源。

// 该 Session值只有在Session为空和搜索的时候改变,若你还实现了对数据源的添加,修改,删除
//那你还需再从新设置Session值,可直接将该Session值设为空,然后调用BindClassGrid函数;







// this.CreateDataSource()实现了从数据库中检索数据





在搜索的时候,你需要将Session值,重新赋值,即搜索出来的结果集,这样的话,在你PageIndexChanged的时候才不会出现结果不一致的问题;
对于对DataGrid排序问题,也是因为数据源不一致的问题,即搜索结果和排序结果集不一致问题,解决办法还是按照上面的方法,将结果集统一存放到一个Session中。























用这样的办法,就可以解决数据源的不一致问题。
鉴于个人语言表达能力局限,不清楚处,还望大家多多指教。