欢迎光临
我们一直在努力

信息系统的快速开发(3)数据信息的提取-.NET教程,C#语言

建站超值云服务器,限时71元/月

为了保持整个系统有足够的扩展和足够的弹性(能够满足灾webform和winform中的使用,以及其他数据库更新的来源,比如说office 2003中infopath,以及webservice等等),我将整个dbform的构架拆分为forminfo类和sqlbuilder两个基类,下面分别描述forminfo类和sqlbuilder类的作用以及申明

forminfo主要负责整个数据库field信息的抓取,主要包括了以下两个方法:

/// 添加将要进行遍历的容器、

public virtual void appendcontainer(object acontainer)

/// 添加单个控件

public virtual void appendcontrol(object acontrol)

/// 清除先前已经配置好的form信息

public void clearforminfo()

主要提供了两个虚方法,一个公开的clearforminfo方法,从方法名称上面的含义大家看得很清楚了,整个forminfo可以根据容器和单独的控件进行添加,在这里,我有必要说明一下我的dbform架构中针对winform和webform的扩展,因为下面的winforminfo类和webforminfo类分别继承自forminfo,实现winform和webform的信息提取

再winforminfo和webforminfo中,主要是一个针对container的循环,以及通过重写appendcontainer实现

/// 添加将要进行遍历的容器

public override void appendcontainer(object acontainer)

{

system.web.ui.control container = (system.web.ui.control)acontainer;

foreach(control acontrol in container.controls)

{

this.doappendcontrol(acontrol);

}

}

在下面的webqueryform和webmodifyform中,就是实现具体的form信息提取了。为什么要用这么多类的继承呢?我觉得这样的视线,主要有以下几点好处

1. forminfo类主要提供最公开的接口,以及一些基础的方法(提供了一个protected的方法,用于将分析出的form信息填充入forminfoentity中(窗体信息的描述类)

2. winforminfo和webforminfo类主要是把容器object转换成为具体的wincontrl和webcontrol,并且调用相应的控件信息解析器,实现数据的提取。

3. 接下来的modifyforminfo和queryforminfo主要就提供了控件的信息解析器具体实现,根据具体的控件和具体的任务(modify呢还是query)分别解析出控件的信息,比如说queryforminfo中需要加入相关操作符号的信息(like,=等等)

下面是具体控件的添加操作

private void doappendcontrol(system.web.ui.control acontrol)

{

if (acontrol is smisnet.webcontrol.smisdropdown)

{

this.doappenddropdownlist(acontrol as smisnet.webcontrol.smisdropdown);

}

else if (acontrol is system.web.ui.webcontrols.textbox)

{

this.doappendtextbox(acontrol as smisnet.webcontrol.smistextbox);

}

else if (acontrol is system.web.ui.webcontrols.listbox)

{

this.doappendlistbox((system.web.ui.webcontrols.listbox)acontrol);

}

}

其实这部分代码写得并不算优美,包括doappenddropdownlist等方法都写成了虚方法,有不少代码的臭味到。其实不应该这样的,只是因为我们现在的工作比较简单(只有这三种窗体,不过我想包括了大多数信息系统开发的情况)如果您使用了其他的控件,可以考虑修改acontrol is xxx,然后天加上自己的控件的处理方法,forminfo就支持了新的控件的解析。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 信息系统的快速开发(3)数据信息的提取-.NET教程,C#语言
分享到: 更多 (0)

相关推荐

  • 暂无文章