C# Web控件与数据感应之 BaseDataList 类
目录
关于数据感应
BaseDataList 类
范例运行环境
pageview 方法
设计
实现
调用示例
数据源
调用
小结
关于数据感应
数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,本文将继续介绍以与数据库提取数据并捆绑控件为例,讲解 C# 创建适用于 BaseDataList 类(如DataGrid)的通用分页数据显示方法。
BaseDataList 类
BaseDataList 类是包括如 DataList 、DataGrid 服务器控件的基类,本文我们以 DataGrid 服务器控件控件,并结合 MS SQL SERVER 和 达梦数据库,以数据分页的形式,绑定 DataGrid进行显示。
更多 BaseDataList 类的介绍请参照如下链接:
https://learn.microsoft.com/ZH-CN/dotnet/api/system.web.ui.webcontrols.basedatalist?view=netframework-4.8.1&viewFallbackFrom=net-7.0
范例运行环境
操作系统: Windows Server 2019 DataCenter
.net版本: .netFramework4.7.1 或以上
开发工具:VS2019 C#
数据提取:在这里我们以能够支持 MS SQL Server 2016、国产达梦数据 8 的通用数据库内容提取方法为例, 生成数据源需要利用 ADO.NET 中的数据提供者对象包括IDbConnection、IDbCommand、IDbDataParameter等,如何使用这些对象请参考我的文章:
《C#实现 IDbConnection / IDbCommand 等相关通用数据接口》
pageview 方法
设计
pageview 方法内置了分页函数写法(目前支持 MS SQL Server 2016 和国产达梦 8 数据库 ),另外传递SQL关键命令及配置相关参数,将数据源分页感应到指定的 BaseDataList 类控件上,其参数说明如下表:
序号 | 参数名 | 类型 | 说明 |
---|---|---|---|
1 | DbServerType | string | 目前支持 "oracle"、 "dm8",其它字符串均视为 MS SQL Server |
2 | strConn | string | 对应数据库的连接字符串 |
3 | webctls | string[] | 对应的信息标签和选择框的ID集合,如果不指定则按默认值处理,即: webctls[0]="q_pageno"; //当前页 webctls[1]="q_pagecount"; //总页数 webctls[2]="q_recordcount"; //总记录数 webctls[3]="q_pagesize"; //可选择的每页记录数 webctls[4]="q_pageno_label"; //可选择的每页记录数 |
4 | navsender | string | 导航按钮的 CommandArgument, nav1 表示首页,nav2 表示上一页,nav3表示下一页,nav4表示最后一页 |
5 | dbgrid | System.Web.UI.WebControls. BaseDataList | 用于捆绑 BaseDataList 的控件,如DataGrid |
6 | DisplayFieldList | string | 用于捆绑到 BaseDataList 的控件上的字段列表,以逗号进行分隔 |
7 | SelectedFieldList | string | SQL 查询语句的 select 部分,即查询字段列表,DisplayFieldList 参数是它的子集 |
8 | OrderFieldList | string | SQL 查询语句的 order by 部分,字段以逗号进行分隔 |
9 | FromTableList | string | SQL 查询语句的 from 部分,表名以逗号进行分隔 |
10 | WhereStatements | string | SQL 查询语句的 where 条件部分, 字符串需要书写 where 字样 |
11 | paras | ArrayList | 查询条件中的参数对象集合 |
12 | keyfield | string | 查询结果集的唯一标识字段,用于统计总数 |
13 | OuterFromTableList | string | 是否有用于左、右连接的表名列表 |
14 | OuterWhereStatements | string | 用于左、右连接的查询条件 |
15 | movWhereToOuter | bool | 是否用左、右连接查询条件替代where查询条件(如果需要) |
16 | GroupFuncs | ArrayList | 一组需要特殊指定的统计变量值,其添加string[]对象,string[0] 存储字段名,string[1]存储变量名 |
实现
pageview 方法完整代码如下:
public string pageview(string DbServerType,string strConn,string[] webctls,string navsender,System.Web.UI.WebControls.BaseDataList dbgrid,string DisplayFieldList,string SelectedFieldList,string OrderFieldList,string FromTableList,string WhereStatements,ArrayList paras,string keyfield,string OuterFromTableList,string OuterWhereStatements,bool movWhereToOuter,ArrayList GroupFuncs) { string[] defaultobj=new string[5]; defaultobj[0]="q_pageno"; //当前页 defaultobj[1]="q_pagecount"; //页总数 defaultobj[2]="q_recordcount"; //总记录数 defaultobj[3]="q_pagesize"; //可选择的每页记录数 defaultobj[4]="q_pageno_label"; //可选择的每页记录数 if(webctls==null) { webctls=defaultobj; } if(webctls.GetLength(0)_npc) { _now=_npc; } if(_now
还没有评论,来说两句吧...