.net入门教程--bs代码生成(二)

四界面设计

设计此工具给个人使用,故不设计登录界面已经账号权限等相关功能。

4.1 主界面

需要分2个主要模块

        1 项目

        界面管理:项目基本信息,项目下属表信息,数据表下属的字段信息。

        2 生成

        界面管理:项目配置信息,已经代码生成功能。

如图:

 

        操作要点:

                窗体IsMdiContainer设置成true

                添加一个menuStrip控件放置在窗体最上方。如图:在控件中添加2项:项目,生成。

每一项的点击事件中添加一个窗体显示代码。FProjectTableColumnList为项目,数据表,字段显示窗体。如:

private void 项目PToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FProjecTableColumList fptc = new FProjecTableColumList();
            fptc.MdiParent = this;
            fptc.Show();
        }

4.2 项目界面,

项目界面(FProjectTableColumnList)划分左中右3个部分。从左到有分别为:项目列表,数据表列表,字段列表。

项目列表,鼠标左键双击后中间的数据表会查询选中项目下属所有数据表信息。

数据表列表,鼠标左键双击后右侧字段列表会查询此表中所有字段信息。

图例中,选定“AutoIndictment”项目,选定“indictment”数据表

如图:

邮件操作:

        在各个列表区域内,鼠标右键会弹出功能菜单,菜单中包含3个功能:新建,修改,删除。

系统会自动判断鼠标在那个列表区域点击弹出的菜单功能,进而会弹出对应的操作界面。

如图: 

        此右键菜单需要在界面添加一个ContextMenuStrip控件。命名为ctmsProject 如图:

        鼠标选中ContextMenuStrip右键选择“编辑项”如图:

在“成员”列表中添加3个成员,分别为新建,修改,删除。界面右侧为属性编辑窗口。修改属性Text的内容。(如有需要也可以按照自己的设计修改属性。)

鼠标左键选中“ContextMenuStrip”后见面左上角会出现展示样式如图:

双击“新建”按钮,系统自动添加新建按钮对应的点击事件。

         为了能区分弹出菜单来自哪里(项目,数据表,字段表)给ContextMenuStrip添加了一个Item_Click事件ctmsProject_ItemClicked。在事件代码中只记录事件激活来源。代码如下:

private void ctmsProject_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            string str1 = (sender as ContextMenuStrip).SourceControl.Name;
            _menuSourceName = str1;
        }

        在新建按钮点击的事件中会跟据这个事件来源,显示不同的操作界面。图中FProjectEdite为项目编辑窗体。

if (_menuSourceName.Equals("lbProject"))
{
    FProjectEdit fpe = new FProjectEdit(null);
    fpe.Owner = this;
    fpe.ShowDialog();
}

        给每个区域都添加鼠标抬起时间Mouse_Up在事件代码中,判断为鼠标右键,则显示此功能菜单。例如:项目列表为ListBox起名为lbProject在给此控件增加lbProject_MouseUp事件代码如下:

private void lbProject_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                ctmsProject.Show(lbProject, e.Location);
            }
        }

4.3 参数设置

如图: 

 

项目参数与代码生成相关的参数信息。

信息说明

命名空间:会在代码生成的时候嵌入代码,需要与实际项目的命名空间一致。当然如果不一致不影响生成过程,但更新到项目之后需要手动修改,否则会造成一定麻烦。

路径:代码生成后保存的路径。

数据:项目的数据库连接串。在自动更新的时候需要采用此信息,直接连接数据库更新数据库结构。

逻辑处理:是否生成BLL的相关代码

生成接口:是否生成接口代码。目前是一般处理程序的方式实现接口。

展示界面(aspx层):根据模板生成对应的aspx界面(List.asxp主界面,add和edite为弹出层的方式实现。)

项目路径:为项目存放路径。在自动更新的时候需要采用此信息,直接复制生成代码文件到项目对应文件夹,并修改项目描述文件(*.csproj)

按钮说明

保存:仅仅把界面信息保存到参数配置表中。

生成:先保存参数配置,然后生成代码,代码存放在路径中。

自动更新:保存参数配置,然后生成代码,自动复制代码到项目中。

代码生成后保存到指定位置。如图:

 

五逻辑代码

        页面初始化的时候需要获取数据库中全部的项目信息。这就设计到跟数据库的交互过程。此处就项目列表初始化,介绍此过程,后续章节会详细介绍业务逻辑层,已经数据操作层详细设计以及实现。

        BLLProject类业务逻辑操作层,有关项目所有操作的集合。

        DALProject类为数据操作层,有关项目所有操作的集合。

备注:

        显示层只会调用业务逻辑成代码,不会直接调用数据操作层代码。也是分层治理的好处。由本工具体积不大,是否有必要如此设计不进行讨论。个人喜欢而已。

5.1 窗体加载

        窗体加载事件为FProjecTableColumList_Load 在此过程中,加载必要的数据信息,对窗体控件进行初始化。

        此处实际功能为:获取所有项目信息,并初始化到项目listbox中。代码如下:

private void FProjecTableColumList_Load(object sender, EventArgs e)
        {
            List<Project> arr = BLL.BLLProject.Select();
            lbProject.DataSource = arr;
            lbProject.DisplayMember = "name";
            lbProject.ValueMember = "code";
        }

BLL.BLLProject.Select()为查询数据库中所有项目基本信息,并返回查询结果集合。然后把此集合绑定在listbox上。并设置现在属性。

5.2 数据联动

         窗体中的数据表列表也是listbox控件,由于数据表与项目存在隶属关系,在用户为选定项目的时候,数据表控件不应该显示内容,故对数据表listbox需要实现与项目列表的数据联动效果,即切换不同的项目,数据表列表内容会随之改变。

        这个效果的源头为项目列表的选中项序号改变。在此处给项目列表控件设置了双击事件即lbProject_DoubleClick。代码如下:

private void lbProject_DoubleClick(object sender, EventArgs e)
        {
            string projectCode = lbProject.SelectedValue.ToString();
            List<Table> arrAll = BLL.BLLTable.SelectByProject(projectCode);
            List<Table> arr =null;
            if (arrAll != null)
            { 
                if (cbShowSys.Checked)
                {
                    arr = arrAll;
                }
                else { 
                    arr = ( from a in arrAll where a.is_system == false select a ).ToList();
                }
            }
            if (arr == null)
            {
                arr = new List<Table>();
            }
            lbTable.DataSource = arr;
            lbTable.DisplayMember = "name";
            lbTable.ValueMember = "code";
        }

        由于项目列表,绑定的是实体模型project故在取得当前选中项的时候,可以把选中项直接转换成实体project。

        然后根据选中的项目信息去查询项目下所有数据表信息。并绑定在数据表listbox上,到此哇噢成了,数据联动效果。

备注:

        从代码中可以看出来,在查询数据表之后又一个过滤的过程,此过程的目地为,过滤掉系统级别的数据库,此类数据表多为系统自带数据表,一般情况不需要用户操作的数据表。例如:用户基本信息表,权限表等。再后续的数据库设计章节会详述。

        数据联动还存在于数据表与字段列表中。过程类似不进行赘述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NET爱好者的福音来啦! Dot Net代码生成器 - NET代码生成利器 - DotNet代码生成器  基于.net framework 2.0 的代码生成器,功能强大,操作灵活,可以生成任何一种代码文件。提供了数据源、模板、另存为、工具、数据扩展5种插件接口。   1、自定义模板。目前只有一个基础模板,是基于XML配置、字符串替换的,不过该模板支持动态调用代码文件进行编译,对要生成的对象进行预处理,以达到个人的目的。后期可以寻找其他更优秀的模板引擎,来提高生成效率。   目前该模板下定义了几个模板文件,比如FaibClass.data的,还有YS.ORMapper,还有生成HTML、生成SQL的。   2、数据源。一改以往代码生成器的一惯作风,只是单一的使用Sql或其他数据源,在这个工具里,可以打开PowerDesign文档,也可以打开ERWin或是Visio(尚在研究阶段)。并且提供了强好的表及字段编辑功能,主键、外键、枚举等都可以自定义。   还提供了架构同步功能。   3、工具。可以集成一些工具于CodeBuilder强大的界面管理中,可以与CodeBuilder进行协作工作,比如提供对表名字段修改、生成的工具。   4、数据扩展。分别为表及字段进行了扩展,可由个人需要实现该接口,将扩展数据附加于表或字段中,生成更丰富的代码。   5、系统托盘。显示托盘时,再次双击CodeBuilder或双击.dsc文件,都会由托盘调入正在后台运行的CodeBuilder。   6、最后在收藏夹中提供了一个IE工具栏插件,可将网页添加到CodeBuilder的收藏夹。   7、在线插件安装。可由爱好者提供插件发布,在线共享优秀插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值