1. 问题的提出:
我们通获取一些表格控件诸如: GridView, DataGridView中的数据做一些统计. 例如下图 上部分的经费总数部分就是从表格控件中得到的统计结果.
然而发现了 GridView的一个瓶颈: 当取出的数据较多, 表格控件需要分页的时候, 无法得出正确数据,即只能统计当前页的数据列. 这个是比较伤脑筋的.原来通过 GridView的DataSourceID绑定到数据源控件中, 每次分页都会以只进行的方式从数据源控件中读取数据,然后填充该分页.所以得到了错误的结果.
2. 解决方案:
要想获取所有数据行的统计信息, 又该怎么办呢, "百查不得其解", 无意中查阅MSDN发现了ObjectDataSourceStatusEventArgs 这个类.
该类描述如下:
为 ObjectDataSource 控件的 Selected、Inserted、Updated 和 Deleted 事件提供数据。
命名空间:System.Web.UI.WebControls
程序集:System.Web(在 system.web.dll 中)
类型ObjectDataSourceStatusEventArgs 描述如下:
名称 | 说明 | |
---|---|---|
ObjectDataSourceStatusEventArgs | 已重载。初始化 ObjectDataSourceStatusEventArgs 类的新实例。 |
公共属性
名称 | 说明 | |
---|---|---|
AffectedRows | 获取或设置受数据操作影响的行的数目。 | |
Exception | 获取在数据操作期间由 ObjectDataSource 控件调用的方法所引发的任何异常的包装。 | |
ExceptionHandled | 获取或设置一个值,该值指示业务对象引发的异常是否已得到处理。 | |
OutputParameters | 获取包含业务对象方法参数及其值的集合。 | |
ReturnValue | 获取由业务对象方法(如果有)作为对象返回的返回值。 |
公共方法 (请参见 受保护的方法 )
名称 | 说明 | |
---|---|---|
Equals | 已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。) | |
GetHashCode | 用作特定类型的哈希函数。 GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。) | |
GetType | 获取当前实例的 Type 。 (从 Object 继承。) | |
ReferenceEquals | 确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。) | |
ToString | 返回表示当前 Object 的 String 。 (从 Object 继承。) |
受保护的方法
名称 | 说明 | |
---|---|---|
Finalize | 允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。 (从 Object 继承。) | |
MemberwiseClone | 创建当前 Object 的浅表副本。 (从 Object 继承。) |
请参见
通过 Selected方法访问ReturnValue 属性我们就可以获取ObjectDataSource中的数据表视图或 业务方法返回的强类型集合
List<Class T>
3. 具体做法:
在ObjectDataSource控件的属性中附加 Selected事件:
4. 总结:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
通过这种方法, 我们就无须再在 业务逻辑层再次抽取数据统计了, 提高了系统效率.