在我以前的贴子中,有过对此控件的介绍,但也仅仅是使用它的打印功能.经过这段时间的使用,发现它如果作为单据模板使用,效果也很不错,而且作为模板的话,不仅在WebForm里可以,在WinForm里也是可以的,本文提供的demo里就提供了这两个场景的使用.好了,让我们直接进入正题
开发环境要准备好,如图-1所示,其中的文件在下载文件中已提供,直接使用即可
图-1
首先,讲下在WinForm中是如何使用的.在这里,我创建一个自定义控件,名称为WinDataWinodw,继承自GroupBox控件(相当于容器),在此控件中,定义一个DataWindowControl控件,这就是我们所要讲的控件.代码如图-2所示,之前要引用Sybase.DataWindow命名空间的.
图-2
定义好之后,编译通过,在引用的地方,直接将WinDataWindow控件拖动界面里即可,然后我们就可以像使用微软控件一样了.
它的加载方式有3种
1. DataStore方式
它相当于不显示的DataWindowControl对象,可以理解为数据集,但比数据集要增加好多东西,比如UI的布局,栏目标题,字体等.加载完DataStore之后,通过它本身提供的方法,直接加载至DataWindowControl控件即可.使用这个方法有个要求,就是DataStore和DataWindowControl控件的数据窗口名称要一致.代码如图-3所示
图-3
2. DataTable方式
其实控件本身直接提供一个方法,直接使用DataTable对象加载即可,这种方法也有个要求,就是它的数据源和DataTable数据源要完全一致,要求栏目名称和数据类型都要一致,否则,会报错的.代码如图-4所示
图-4
3. InsertRow方式
这种方式最为简单,一句代码搞定.如图-5所示
图-5
讲完这些以后,我们看看它的下拉菜单是如何绑定数据的?如图-6所示.它有一个DataWindowChild对象,相当于Form里的ComboBox控件.这里要注意下,若某个栏目是下拉菜单,一定要将这个栏目的StyleType类型设置为DropDownDW!样式,否则,在获取DataWindowChild会报错,如图-7所示
图-6
图-7
OK,我们继续讲讲它的事件,绑定方法和微软的控件一样,如图-8所示.这个事件是实现栏目切换时触发的,可以完成下拉菜单的级联操作.demo中已提供这个示例,直接参考即可.
图-8
取值和赋值相对来说比较简单.这里不再描述,直接看demo就可以了.讲到这里,这个控件最基本的功能就完成了,数据加载,栏目取值和赋值,事件绑定等.这个控件还有很多其他方法和事件的,最简单有效的查阅方法就是安装一个Sybase Power Builder开发工具,它的帮助文件对此有详细描述,不过,是全英文的,哈哈.
接着,我们讲下在WebForm环境下如何使用.在WebForm环境下,该控件变身为ActiveX控件.因此对这个控件的操作,我们全部放在了前台编写,不过,不用担心,它的强大之处在于,它也已经提供了完善的方法和事件来完成在WinForm同样的功能.
需要在项目文件中引入一个cab文件,它在Sybase Power Builder的安装路径下可以找到,本文提供的demo中可以直接找到,不必安装.在页面里,调用的地方如图-9所示
图-9
数据的加载方式有2种,一种在在后台使用DataStore方式加载好数据,转为字符串,由前台调用即可,详细示例请参考之前的一篇贴子.这里讲一下另外一种方式,就是InsertRow方式.如图-10所示
图-10
我们再看看如何赋值和下拉菜单是如何绑定的?如图-11.取值部分就比较简单,直接看demo就可以了.这里重点说明一下,它的事件是如何触发的,我试了好久才试成功的.如图-12所示
图-11
图-12
OK,至此WebForm部分该控件的使用也介绍完了.
最后发两张效果图,如图-13和图-14所示
图-13
图-14
有人会问,用它来做什么?无论是WebForm还是WinForm,UI层的布局是最繁琐的事情,有时会根据客户需求来随时修改UI布局,包括增删改控件.如果使用这个控件的话,嘿嘿.我们就可以不修改页面本身,而只修改数据窗口就可以了.取值和赋值都是动态的,岂不是很方便哈!还有它的打印功能,也很强大的,请参考之前的贴子.
这里再透露一个它的功能,其实它本身也支持图表功能的,对,就是图表,只是它的色彩比较单一,无法与WebForm程序里五颜六色的其他强大图表相比较.
ExampleDataWindow_src_ReferDll
说明
1. 这次提供的下载文件有3个压缩包,一个是源码及源码所需求的DLL文件,一个是编译直接运行的程序.它们都是不需要安装Sybase Power Builder程序的,直接就可以运行,在我的虚拟机里测试过.只需安装net2.0的类库即可
2. 提供的WebForm版本中,由于控件是ActiveX控件,因此需要注册,我们将cab文件夹中的压缩包解压出来,将所有文件复制至system32下面,运行regsvr32.exe psdwc115.dll即可完成注册
3. IE的安全设置同时也要修改,对ActiveX控件最好设置为启用或提示.
4. 此控件由于可视化界面自行设计,可以在工作流自定义界面环节中使用呢.这是一个思路,仅供参考
5. 有什么问题,大家可以留言,我会及时处理和回复