DataWindow.Net组件示例(全体开源)

1概述

1.1效果简介

Sybase公司的PowerBuilder开发工具,在原先VS工具没有水到渠成从前,是一对一风光的.微软都要与其搭档,学习它Db方面的技艺,才形成了SQLServer数据库。PB开发工具的风景得益于它不行强劲的数目窗口效用,这多少个技能的运用,使得开发管理类软件,尤其是支付数据库管理类软件变得要命简单,与使用VS.NET开发同一软件比较,其开发周期可以裁减至三分之一,只是随着Sybase的没落,技术立异不及时,使得PB开发工具逐步被遗忘在时光的历程中,很少被人提及和记起.但数据窗口的强劲效率,我们依然可以在NET环境中行使

此组件就是行使多少窗口的雄强效用来缓解我们常用的业务场景.同时,又包装一层,使用会更加方便.

通过整理和剖析,在NET环境中行使的数额窗口中隐含如下效果

1.1.1网格控件

批量来得数据,匡助多种数目加载情势,底部合计带,多选行等实用功用.类似于如下环境中的控件

WebForm/WebMVC

GridView控件,服务端只包含数据加载

Html中Table组件

WinForm

DataGridView控件

1.1.2打印模板

将数据直接打印,使用数据窗口制作模板,通过DataTable加载数据,即可打印.尤其在WebForm/WebMVC环境中,不必考虑栏目对象地点,样式等令人头痛的问题.大家可以将复杂报表的体制,包括字段的职务,大小等,全体在数据窗口中安装完成,余下的做事就是加载数据

1.1.3单子编辑模板

单据是提供数据编辑的地方,需要按照用户体验不断调整控件布局,大小等,假使每一次调整都需要开发员参与会潜移默化用户需要的改动时间.使用数据窗口,大家可以在其它的计划条件中修改,修改完事后可向来付出客户使用,而不必在VS环境中修改

1.1.4查找模板

貌似在体现批量数据的页面中,我们可能都会提供部分常用检索条件,来帮衬用户查找她们最亟需的数据.我们在收集检索条件时,可能会将各种检索控件值取出,然后拼接成SQL语句所需的Where条件.

拔取数据窗口,检索栏目可以随时扩张和删除,检索值可以一样拼接.

1.2用出席景

DataWindowNet控件可以付出WinForm,WebForm和WebMVC两种情景下的软件,在WebForm/WebMVC程序行使中,作为ActiveX控件,它还是能在IE浏览器中使用.近日支撑如下二种接纳场景

场景名称

描述

WebForm/WebMVC应用程序

作为ActiveX控件使用

WinForm应用程序

作为UserControl控件使用

1.3面向群体

此控件的制作环境得以不在VS.NET环境中,只需安装PowerBuilder或运行数据窗口设计器即可形成数据窗口的打造过程.软件推行人口作为程序用户的直接服务者,经过培养1-2天,也足以成功简单的制作.程序的发布和布署也简单方便.由此,除软件开发员之外,实施员也是此控件的面向群体

面向群体

描述

软件开发员

调用控件

实施员

制作数据窗口,供控件调用

1.4运行条件

Net类库只须2.0会同以上即可.

它自身也和一般的控件相同,只需调用DLL文件即可.DLL环境包含两部分.第1有的是PowerBuilder环境所要求的,由于数量窗口控件是PowerBuilder开发工具中的控件,由此必须带有此部分DLL;第2部分是数量窗口本身所要求的,数据窗口本身假设急需在NET环境中行使,那么就需要将PowerBuilder环境中的数据窗口控件由Sybase公司包装一层,作为NET可以分析的控件使用,这就有了第2片段所需要的DLL文件.详细DLL文件如下所示

DLL文件类型

DLL文件列表

PowerBuilder应用程序

DataWindow控件

1.5安装程序

控件本身没有提供Setup安装程序,只需将运行条件和NS前缀的dll文件一并复制至Bin文件夹内,通过Net项目文件的Reference引入即可

1.6名词解释

l DataWindowControl

这是一个控件的称谓,就是我们所封装的这些控件在NET环境中的名称.在PowerBuilder开发环境中,它是叫DataWindow的名字.这么些控件可以了解为可视化操作数据窗口的控件,类似于NET中的Panel或GroupBox这类的容器控件.

l DataStore

这是一个对象,此目的的效应与DataWindowControl控件相同,唯一不同的地点:它是不可视化的操作数据窗口的控件,在NET中,它一定于DataSet或DataTable对象的意义,填充并操作数据.

l DataWindowChild

这也是一个目标,倘诺把DataWindowControl比做是WinForm中DataGridView控件的话,这它就是下拉菜单栏目对象.用法完全相同,需要加载数据,设置数据列和突显列名称.

l DataBuffer

可领会为缓冲区,此控件共包含3个缓冲区,如下所示.一般的话,大家只用到Primary缓冲区,而控件本身默认的多寡操作也是在Primary缓冲区中操作的

缓冲区名称

描述(官方,英文)

Primary

The data in the primary buffer, meaning data that has not been deleted or filtered out. (Default value when argument is optional.)

Delete

Data in the delete buffer, meaning data that has been deleted from the DataWindow but has not been committed to the database.

Filter

Data in the filter buffer, meaning data that has been removed from view.

l RowStatus

枚举对象,即数据窗口行状态,相当于NET中的DataRowState枚举对象.属性值包含如下:

枚举对象

描述

Modified

处于修改状态的行

New

处于新增状态的行

NewAndModified

处于新增和修改状态的行

NotModified

没有操作的行状态

l ItemStatus

枚举对象,与RowStatus效能雷同,它是栏目状态.即数据窗口某行中的某个栏目是否被修改.NET中并不曾找到与之接近的枚举对象.属性值包含如下:

枚举对象

描述

Modified

处于修改状态的栏目

NotModified

没有操作的栏目状态

l Processing

这是一个数额窗口的性能,此属性表示控件所加载的多寡窗口是连串,控件本身是不知底它所要加载的数据以何种情势显示,有可能是批量数量(Grid类型),有的是单条数据(Form类型),因而设置了这个特性用于区分.属性值包含如下:

类型

描述

Form

单条数据展示

Grid

批量数据展示,类似于网格控件

Label

标签,类似于超市里的商品标签

Graph

图表,控件也可以直接加载图表

Crosstab

交叉报表,对Db中某张表直接可以设置行列交叉

Composite

复合报表.即此类型的数据窗口中可以同时放置其他类型的数据窗口,作为子表使用.如:可同时放置Grid和Form

OLE

可以把数据直接放至OLE控件,OLE控件必须是PowerBuilder支持的

RichText

可以把数据直接放至RichText控件中

TreeView

这个类型的数据展示,是最近比较火的一种展示方式.即网格控件中的父子表.简单理解,父子表也是有层级关系的,与树相比,每级可能需要展示不止一个结点,

l ItemEditStyle

数量窗口中目的的编排类型.即意味着对象是文本框,直线或图片框等.其属性值包含如下

枚举对象

描述

Text

标签,可理解为NET中的Label

Column

Db列对象,可理解为NET中的TextBox

Line

直线

Bitmap

图片框

Compute

计算列

l Item

这是一个生死攸关字,会更适合一点.在卷入的类库中,会看出成千上万GetItemXX和SetItemXX的方法.这里的Item可知道为品种,子项,即数据窗口中某个对象,可能是直接,可能是文本框或图表框

l Sub

这是一个紧要字,只适用在纷繁类型的数额窗口中.复合类型的多少窗口是可以而且停放弃何数据窗口,那么这中间的多寡窗口就是用Sub来表示.这是为着与Item关键字有所区别,因为她们的意义有所不同

2事情场景

应用此控件可以很有益的援助我们做到很多常用的事体场景,在此针对常用的政工场景,提供代码示例和认证注释

2.1数据加载

就是将Db或任何外部文件的多少填充至数据窗口控件中,此类库中提供6种办法贯彻多少加载.即有PB的观念艺术,也有遵照NET的点子,使用时索要基于不同的作业场景来规定用哪个种类方法

在加载数据在此之前,我们首先要对控件设置四个属性.即它所加载的数据所急需的载体文件名称和对象.可以精通为承接数据的可视化窗口名称及其所在DLL文件名称.使用如下格局加载即可,如图-1所示

Ajax 1

图-1

l 方式一.如图-2所示

Ajax 2

图-2

1.
DataWindow控件在数据加载时,也有一个工作的对象,用于连接Db的.就是Transaction对象,与NET中的Transaction对象效能相似,设置一个Db连接字符串,将事情对象绑定至控件,再刷新一下即可

2.
此种方法近来仅协理SqlServer数据库,而且最好在WinForm应用程序中使用.此控件中的事务与NET的工作有所区别,它是常连接Db的,而NET的作业是应用一回连续五次,这是最大的区别.所以使用此情势对连年Db的带宽会有影响.

  1. 专注提供的Db连接字符串格式,包含如下多少个根本字(注:大小写不区分)

关键字

描述

Data Source

SqlServer服务名称

Database

数据库名称

User id

登录用户ID

PWD

登录用户密码

l 方式二.如图-3所示

Ajax 3

图-3

Ajax,1.
以此点子应该是Sybase为了适应NET而新增的靶子,在Sybase自带的PowerBuilder开发工具中是从未有过这一个目标的,而且此控件刚在NET上采取的时候,ADO.NET的Db连接情势是最盛行的,所以会有此控件

2.
与方法一中的Transaction对象使用情势完全一致,注意它的根本字与措施一的界别是行使了Server那么些关键字作为服务器名称

  1. 根本字表明(不区分轻重缓急写)

关键字

描述

Server

SqlServer服务名称

Database

数据库名称

User id

登录用户ID

PWD

登录用户密码

l 方式三.如图-4所示

Ajax 4

图-4

  1. 此种模式是纯NET的主意,加载一个DataTable对象,然后径直刷新控件即可

l 方式四.如图-5所示

Ajax 5

图-5

  1. 此种形式是行使InsertRow形式扩大数据,可用在加载单条数据

2.
可拔取在WebForm应用程序中,在后台获取数据,使用Ajax情势传送给前台,在前台通过InsertRow情势加载即可.这是因为在WebForm应用程序中,大家是以Active控件形式利用的,在后台是不可能操作控件的

l 方式五.如图-6所示

Ajax 6

图-6

1.
DataWindowFullState对象可了解为二进制数据类型.它可以将控件的装有结构和数目一并存储到这么些目标中,然后经过复制的艺术一并传递给另一个对象

  1. WebForm应用场景中也足以利用此措施

l 方式六.如图-7所示

Ajax 7

图-7

  1. 控件本身有2个法子,专门用来过滤数据,即SetFilter和Filter.

2.
施用此方法,首先将持有数据加载至此,然后就足以应用此办法,设置查询条件检索数据,假若基准为空,则检索出装有数据

2.2栏目值收集/填充

栏目标取值,我们一般只需取得二种栏目类型的值就可以了.分别是Column和Compute.类库中也提供了好多格局协助栏指标取值和赋值操作.

方法类型

方法名称

描述

取值

GetItemDeciaml

获取栏目类型为Decimal类型的栏目值

GetItemDouble

获取栏目类型为Double类型的栏目值

GetItemDateTime

获取栏目类型为DateTime类型的栏目值

GetItemString

获取栏目类型为String类型的栏目值

GetItemObject

获取栏目值,不区分栏目类型

GetItemObjectText

获取栏目显示值,下拉菜单编辑类型栏目专用

GetItemExpression

获取计算字段表达式,计算字段专用

赋值

SetItemNull

设置栏目值为Null

SetItemObject

设置栏目值,Object类型

SetItemExpression

设置栏目表达式,只对计算字段

2.3契约页面级联操作

所谓级联操作,就是某个控件值会依据其余一个控件值的变型而生成,一般最常见的常景要属省市区的联动效能.现使用此控件模拟此工作场景,场景如下描述

五个栏目,分别是省和市,均为下拉菜单编辑类型.其中,省填充新加坡市和丹佛市;市中的数据遵照上海市或伊斯兰堡市,加载下边的区县.如:香港市,东四区;突戈亚尼亚城市,红桥区.界面如图-8所示.选拔省部分的下拉菜单,市的数据会跟着联动

Ajax 8

图-8

2.4复合报表示例

复合报表,一般用来制作复杂结构的数额窗口,例订打印票据,需要表头数据,明细数据和表最后多少个据.也就是说,需要由3部分组成.普通的多寡窗口是从未此意义的,要么都是表头的Form数据窗口,要么都是密切数据的Grid数据窗口.而复合数据窗口就足以解决此问题,而且也得以透过可视化设计实现.在如图-22所示的页面中,采用需要的子数据窗口即可.

Ajax 9

图-22

此间我们选用如下3个数据窗口,作为复合数据窗口的表头,表体和表尾.

名称

描述

d_example_composite_head_bl

复合数据窗口表头文件

d_example_composite_body_bl

复合数据窗口表体文件

d_example_composite_foot_bl

复合数据窗口表尾文件

加载数据情势也相比简单,如图-23所示,如同加载下拉菜单的数额一致,如图-23所示

Ajax 10

图-23

看下最图的功用图,如图-24所示

Ajax 11

图-24

2.5动态成立对象

所谓动态创设对象,就是基于某个控件中的数据窗口,在此外的模版文件中动态创制对象.这些工作场景适用于复合数据窗口打印,由于复合数据窗口是由三个子数据窗口组合而成,因而打印也不得不打印其中一个,如若整个打印的话,就需要将每个子数据窗口的目的动态生成至一个打印数据窗口才可以.

可动成生成的对象即是ItemEditStyle的体裁,这二种编辑类型的目的均是足以动态变化的.调用艺术名称如图-18所示.只需传入对象名称即可,也能够同时获取多少个目的,也得以赢得某一编纂类型的享有目的生成语句

Ajax 12

图-18

开创的办法很简单,我们只需调用Modify方法即可.一般那个办法与Describe方法一并利用,重要处理数据窗口中的对象属性值的取值和赋值.在提供的示范页面中,如图-19所示.对每个编辑类型的目的,生成的Create语句都抱有描述

Ajax 13

图-19

2.6交叉表数据彰显

交叉表的接纳,可以扶持大家急忙分析数据,但由普通的二维表转为复杂的穿插表,需要有自然功力的开发员才得以.此控件可以以指点的主意可视化地将一个常备的二维表转为交叉表的格局.模拟表结构如图-9所示.模拟学生的学科战表

Ajax 14

图-9

咱俩来看看制作向导,这就用到PowerBuilder的开发工具了.成立的数量窗口类型采取CrossTab类型之后,在如图-10选拔行列关系时,这样拔取就能够了.

Ajax 15

图-10

如若定义好所急需的行列栏目名称,以及交叉后需要显示的值就可以了,设计功用图如图-11所示

Ajax 16

图-11

最后,大家要做的事务,就是填充数据,填充的多少是经常的二维表数据,不必是穿插后的表数据.填充数据的方法要证实下:选取PB的观念办法加载,不是透过DataTable对象加载就可以了.如图-12所示

Ajax 17

图-12

看,就是这么简单.整个流程最复杂的设计环节交由可视化的设计器实现,我们只需写代码加载数据即可.最后效果图如图-13所示

Ajax 18

图-13

2.7父子表数据显示

父子表的功力,关键是看网格控件是否援助,值得庆幸的是,此控件我们得以模拟出父子表的效果,我们接纳的思绪是TreeView类型的数码窗口,那些类型的数码是在PB10过后才扩展的始末,使用效能也不错.父子表简单说就是树的一种扩充,树里面是只体现某一个栏目值,而父子表在同一流别中要求同时展现四个栏目值,此类型的数量窗口就落实了并且映现三个栏目.制作过程如下.

手续1:准备做为父子表的数据源,这里运用Northwind数据库中的Orders和Order
Details表,表结构定义如图-14所示

Ajax 19

图-14

手续2:制作数据窗口,在采纳TreeView类型的多少窗口后,接纳数据源,在如图-15所示的页面中,左边的栏目名称列表就是大家作为父级数据的栏目名称,那里选取OrderID,CustomerID,EmployeeID和OrderDate六个字段即可.OK,整个经过创造形成,我们看看设计时的法力图,需要雅观的话,可以再加载一下,如图-16所示

Ajax 20

图-15

Ajax 21

图-16

步骤3:加载数据,使用PB的传统情势或NET情势均可.最后效果如图-17所示

Ajax 22

图-17

2.8图表示例

数量窗口也是支撑图表效率的,而且也非凡有力,图表类型帮忙很多种,包含如下图表类型.如图-20所示

Ajax 23

图-20

打造流程与创立一般数量窗口相同,在如图-21的页面中采纳好XY坐标所急需的值即可,生成的末段效果图如图-22所示

Ajax 24

图-21

Ajax 25

图-22

2.9错综复杂报表

数据窗口最大的优势就是可以像WinForm开发这样,随意拖拉控件,即使在WebForm/WebMVC场景中,从而无需考虑体制布局等.如下图-23所示

Ajax 26

图-23

3支出示范表达

本控件提供的以身作则解决方案,其支付环境:VS2012+Net.4.0

演示解决方案表明

名称

描述

Navi.Soft30.Product.DataWindowNet

解决方案

NS.Product.DataWindowNet.Service

DataWindow控件服务类封装

NS.Product.DataWindowNet.WinUI

WinForm场景中UI页面

NS.Product.DataWindowNet.ZLaunch

WinForm场景示例

NS.Product.DataWindowNet.ZLaunch.WebForm

WebForm场景示例

NS.Product.DataWindowNet.ZLaunch.WebMVC

WebMVC场景示例

4FAQ

4.1FAQ1

问:控件可以在如何支出条件下利用?

答:控件可以在WebForm和WinForm均可以使用.在WinForm控件中,作为自定义控件使用;在WebForm控件中作为ActiveX控件使用,并且只好在以IE为根本的浏览器中使用.如下图-24和图-25所示

Ajax 27

图-24

Ajax 28

图-25

4.2FAQ2

问:控件是依照PowerBuilder开发工具什么版本?

答:控件是基于PowerBuild11.5的本子

4.3FAQ3

问:批量数目窗口中的数据行号是从0如故1先导?

答:是从1初步.与NET的起使有所区别,这是因为Sybase的PowerBuilder开发工具要早于NET现身

 

领取下载情势

1,关注微信公众号:小特工作室(也可围观签名处二维码)

2,发送:示例4002

即可下载

相关文章