您的位置:威尼斯官方网站 > 威尼斯正规官网 > FormInfo主要负责整个数据库Field信息的抓取

FormInfo主要负责整个数据库Field信息的抓取

发布时间:2020-01-04 04:03编辑:威尼斯正规官网浏览(128)

                     为了保险总体类别有丰富的扩大和丰硕的弹性(能够满意灾WebForm和WinForm中的使用,以致别的数据库更新的来源于,比方说Office 二零零二中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就辅助了新的控件的深入剖判。                  

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:FormInfo主要负责整个数据库Field信息的抓取

    关键词: