分类

  • 软件天地

  • 信息系统的快速开发之数据信息的提取‖
    以及其他数据库更新的来源
    整个DBForm的构架拆分为Fo
    SqlBuilder类的作用以及申
    够的扩展和足够的弹性(能够满
    ,比如说Office 2003中InfoPat
    rmInfo类和SqlBuilder两个基类

    足灾WebForm和WinForm中的使用,
    h,以及WebService等等),我将
    ,下面分别描述FormInfo类和


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

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

      public virtual void
    AppendContainer(object ACont
    ainer)

      /// 添加单个控件                                                          

      public virtual void AppendContro
    l(object AControl)

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

      public void ClearFormInfo()                        

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

      再WinFormInfo和WebFo
    AppendContainer实现
    rmInfo中,主要是一个针对Cont

    ainer的循环,以及通过重写


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

      public override void AppendConta
    iner(object AContainer)

      {                                                                            

      System.Web.UI.Contro
    l Container = (System.Web.UI
    .Control)AContainer;


      foreach(Control ACon
    trol in Container.Controls)

      {                                                                            

      this.DoAppendControl(AControl);                

      }                                                                            

      }                                                                            

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

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

      2.WinFormInfo和WebFormInfo类主
    WebControl,并且调用相应的控件信息解
    要是把容器Object转换成为具体的WinContrl和
    析器,实现数据的提取。

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

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

      private void DoAppen
    dControl(System.Web.UI.Contr
    ol AControl)

      {                                                                            

      if (AControl is SmisNet.WebContr
    ol.SmisDropDown)

      {                                                                            

      this.DoAppendDropDow
    nList(AControl as SmisNet.We
    bControl.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.L
    istBox)

      {                                                                            

      this.DoAppendListBox((System.Web
    .UI.WebControls.ListBox)AControl);

      }                                                                            

      }                                                                            

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

      这一系列的类的具体操
    取出来的数据,转换成为Sq
    作,就实现了窗体数据的信息提
    l
    取,接下来我们应该考虑怎么把提



    上一页 下一页




    map