------------------------------------------------------------------------

  1)界面就用软件本身封装的

  2)可以选择当前选择的数据库中的几个表

  3) 同MyGeneration【ui-winform】做一下对比而已

-----------------------------------------------------------------------

Interface Code

<%#REFERENCE System.Windows.Forms.dll %>
<%#NAMESPACE System.Windows.Forms, System.Drawing,System, System.Text, System.Collections, Zeus, Zeus.UserInterface, Zeus.DotNetScript, Microsoft.Win32  %>
 
public class GeneratedGui : DotNetScriptGui
{
    public GeneratedGui( ZeusGuiContext context ) : base( context ) {}

GuiTextBox classNamespace;
    GuiTextBox outputPath;
    GuiTextBox memberPrefix;
    GuiTextBox connectionString;
    
    public override void Setup()
    {
        if ( !input.Contains( "chooseTables" ) || !input.Contains( "txtPath" ) ||
                ( !input.Contains( "chkClass" ) && !input.Contains( "chkNaming" ) ) )
        {
            ui.Title = "Zhuer's Generator";
            ui.Width = 330;
            ui.Height = 400;
                
            // 选择数据库Label 
            GuiLabel label5 = ui.AddLabel( "label5", "选择一个数据库:", "选择一个数据库" );
            
            // 选择数据库下拉列表
            GuiComboBox chooseDatabase = ui.AddComboBox( "chooseDatabase", "选择一个数据库" );
            
            // 显示当前选择的数据库中所包含的表
            GuiLabel label7 = ui.AddLabel( "label7", "选择表:", "选择表" );
            GuiListBox chooseTables = ui.AddListBox( "chooseTables", "选择表");
            chooseTables.Height = 200;
            
                        
            // 为选择数据库的下拉列表创建onchange事件
            setupDatabaseDropdown( chooseDatabase );
            // 绑定处理方法
            chooseDatabase.AttachEvent( "onchange", "chooseDatabase_onchange");
            
            ui.ShowGui = true;
        }
        else 
        {
            ui.ShowGui = false;
        }
    }
    
    //选择数据库
    public void setupDatabaseDropdown( GuiComboBox Databases )
    {
        try 
        {    
            if( MyMeta.IsConnected )
            {
                Databases.BindData( MyMeta.Databases );
                if( MyMeta.DefaultDatabase != null ) 
                {
                    Databases.SelectedValue = MyMeta.DefaultDatabase.Alias;
                    bindTables( Databases.SelectedValue );
                }
            }
        }
        catch
        {
        }
    }
    
    //绑定数据库中的表
    public void bindTables( string sDatabase )
    {
        int count = 0;
    
        GuiListBox lstTables = ui["chooseTables"] as GuiListBox;
        
        try 
        {    
            IDatabase db = MyMeta.Databases[sDatabase];
            lstTables.BindData( db.Tables );
        }
        catch
        {
        }
    }    
    
    //选择数据库引发的事件
    public void chooseDatabase_onchange( GuiComboBox control )
    {
        int count = 0;

GuiComboBox cmbDatabases = ui["chooseDatabase"] as GuiComboBox;
        bindTables( cmbDatabases.SelectedText );
    } 
    
}

Template Code

<%
public class GeneratedTemplate : DotNetScriptTemplate 
{
    //选中的表
    private IList _selectedTables;
    //数据库名
    private string _dbName;
    //表名
    private string _tableName;
    //类名
    private string _className;
    //输出路径
    private string _exportPath="C:\\cs";
    //文件名
    private string _fileName;
    //文件名
    private string _nameSpace;
    public GeneratedTemplate(ZeusContext context) : base(context) {}

//---------------------------------------------------
    // Render()就是Template Code的入口函数,当成Main就好了
    //---------------------------------------------------
    public override void Render()
    {
        _dbName = input["chooseDatabase"].ToString();        //选择的数据库
        _selectedTables = input["chooseTables"] as ArrayList;//选择的表
        foreach (string _newTable in _selectedTables)
            {
                ITable _workingTable = MyMeta.Databases[_dbName].Tables[_newTable];
                _tableName = _workingTable.Alias.Replace(" ", "");
                _className = TableToClassName(_workingTable);
                GenerateModelFile(_workingTable.Columns);
                
            }            
        System.Diagnostics.Process.Start("explorer.exe",_exportPath);//文件输出完毕,打开输出文件夹
    }
    
    
    //---------------------------------------------------
    // 循环某个表中的所有列  每运行一次 则把一个表实体映射到一个cs文件
    //---------------------------------------------------
    private void GenerateModelFile( IColumns Columns )
        {
            _nameSpace="MyModel";
            output.writeln( "using System;" );
            output.writeln( "" );
            output.writeln( "/// <summary>" );
            output.writeln("///\tMyGeneration : 实体类 " + _className);
            Version();
            output.writeln( "/// </summary>" );
            output.writeln( "namespace " +_nameSpace+".Model");
            output.writeln( "{" );
            output.writeln( "\tpublic class "+ _className);
            output.writeln( "\t{" );
            
            //私有成员变量
            //BuildPrivateMembers( Columns );
            //BuildDefaultConstructor( Columns );
            //BuildPublicProperties( Columns );
            output.writeln( "\t}" );
            output.writeln( "}" );
            
            _fileName = _className + ".cs";
            output.saveEnc( "c:\\cs\\" + "MOD_"+_fileName ,"o","unicode" );
            output.clear();
        }
    
    // 版本信息 【公共小函数】
       private void Version()
        {
            output.writeln("///\t作者:You");
            output.writeln("///\t我的博客:http://you.cnblogs.com/");
            output.writeln("///\t版本:1.0");
            output.writeln("///\tCreated on " + DateTime.Now);
        }
    
    
    // 表转换为类名【公共小函数】
    protected string TableToClassName(ITable table)
        {
            string tableName=table.Alias;
            return tableName.Replace(" ","");
        }
}
%>

转载于:https://www.cnblogs.com/master-zhu/archive/2010/06/10/1755771.html

MyGeneration【ui-原】相关推荐

  1. JAVA团队开发手册 - 2.代码管理

    工具选择 代码管理用什么工具好,有人喜欢git,不过git有个小小的缺点,就是对UI使用的大文件支持不太好,比如PSD文档,PNG文档等等. 作为windows下的佛系程序员,我还是保守一点,团队使用 ...

  2. win7变成xp风格了怎么改回_win7

    2017-03-31 16:34:05 浏览量:7614 随着win7系统不断发展和稳定,许多用户都从xp升级到win7系统,可是一些用户反馈说win7功能虽然多,但是界面不习惯,很多设置都不知道如何 ...

  3. 自动化运维saltstack(资源)

    2019独角兽企业重金招聘Python工程师标准>>> 简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp ...

  4. 常用前端资源网站集合

    常用的学习资源网站: 前端导航(一款前端网站集合的网站): https://docs.pfan123.com/ 知识点类: https://cloud.tencent.com/developer/ar ...

  5. 【无标题】游戏原画和UI的区别?

    \n游戏原画:\n\n游戏原画设计,是游戏项目前期准备环节.游戏原画师需要通过游戏策划的文字等描述,结合自己的想象,进行角色.场景.道具形象的概念设计.原画设计是游戏美术设计环节的参照蓝图,是后期建模 ...

  6. 开箱即用的后台UI框架eui(原eadmin)

    (很多人问有没有开箱即用,不需要复杂打包环境配置的功能强大.界面精美的后台UI框架,现在他来了) eui 基于原生JS开发,开箱即用,无需打包环境,专门为不太熟悉mvvm开发模式的人员定制打造.此次是 ...

  7. C#类中操作UI层控件状态[原]

    一直以来都是接触B/S开发,很少做C/S开发,线程就用得更少了,最近做一些工作中用到的小软件终于用上了线程,记录一些心得. 场景:       1:假设有窗体F,里面有一按钮BtnA,及一Label控 ...

  8. iOS开发UI篇 程序启动原理和UIApplication

    2019独角兽企业重金招聘Python工程师标准>>> 一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplicati ...

  9. iOS超全开源框架、项目和学习资料汇总(1)UI篇

    上下拉刷新控件 **1. ** MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.(推荐) ...

  10. iOS超全开源框架、项目和学习资料汇总:UI篇

    2017-01-30 iOS巍 CocoaChina 原文 上下拉刷新控件 1. MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉 ...

最新文章

  1. JavaScript 全选函数的实现
  2. 第四范式与丘成桐北京雁栖湖应用数学研究院签署战略合作协议
  3. html下拉框变长,改变HTML下拉框SELECT选项的多种方法
  4. 816D.Karen and Test 杨辉三角 规律 组合
  5. 猎户座计划软件测试,三星Exynos4412
  6. @NOIP2018 - D1T1@ 铺设道路
  7. 个类似GoogleMap的客户端JS开源库
  8. 【Unity Native Plugins】1.调用动态库so-android篇 附录完整工程
  9. 计算机控制面板设置命令,进入开始---设置--控制面板--声音和音频设备命令
  10. 计算机硬盘能否做u盘用怎么用,教你怎么用移动硬盘做原系统的启动硬盘图文教程...
  11. Java实现局域网流量监控
  12. #SVN Skipped ‘xxx‘ -- Node remains in conflict 错误的解决办法#
  13. shiro+微信登录整合
  14. printf中%p的输出应用
  15. 你认为微软 Win12 可以在哪些方面改进?
  16. 神经网络怎么学,怎么学神经网络
  17. ACM-ICPC近年省赛汇总
  18. HDFS 本地编程报错java.net.ConnectException: Call From LAPTOP-LJF22VB3/192.168.56.1 to 192.168
  19. 学计算机人都很自私,心理学家:内心极度虚伪的人,往往都有这三个特征,趁早远离!...
  20. ESModule 系列 (二):构建下一代基础设施 PDN

热门文章

  1. Map与Set的经典OJ题
  2. java同步机制简单介绍
  3. php如何发起get网络请求,php发送get、post请求的几种方法
  4. C语言程序设计输入x求函数y,C语言程序设计实践(OJ)-初识函数
  5. c语言里变量列表,嵌入式C语言里的土豪们之变量类型
  6. antd 函数组件_React - 组件:函数组件
  7. 运维基础(1)Nginx
  8. 常用网络故障集锦,收藏备用
  9. 阿里开源分布式限流框架 -Sentinel Go 0.3.0 发布,支持熔断降级能力
  10. android service alertdialog,Android service里面启动alertdialog