一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)

简介: 本文是一步一步教你使用AgileEAS.NET基础进行应用开发系统的WinForm应用篇的开篇,从本文起开始大家将看到一个距离真实应用非常接的开发案例。 商品字典管理          商品字典管理完成产品进销存业务业务中用到的基础信息,产品字典的增加、修改、删除等业务,它不是一个进销存在主体业务,只是用于为主体业务提供基础支持的一个辅助业务。

        本文是一步一步教你使用AgileEAS.NET基础进行应用开发系统的WinForm应用篇的开篇,从本文起开始大家将看到一个距离真实应用非常接的开发案例。

商品字典管理

         商品字典管理完成产品进销存业务业务中用到的基础信息,产品字典的增加、修改、删除等业务,它不是一个进销存在主体业务,只是用于为主体业务提供基础支持的一个辅助业务。

功能和界面预览

         商品字典管理完成产品进销存业务业务中用到的基础信息,产品字典的增加、修改、删除等业务,它不是一个进销存在主体业务,只是用于为主体业务提供基础支持的一个辅助业务。

image

         字典查询:根据产品编码或者产品名称的拼音简码检索数据库与之匹配的产品字典数据,并且显示的数据列表之上。

         查询结果打印:将满足查询的结果打印输出,演示报表的使用。

         添加新的产品字典:调用产品字典添加界面向系统中增加一个新的产品字典。

         修改现有产品字典:调用产品字典修改界面修改指定的产品字典记录。

         删除现有产品字典:删除系统中已经存在的某个产品字典。

代码的重新生成

         现在我们可以来看看如何实现,不过,我们在看这个实现之前先插入一个小插曲,我们来看看我们的数据查询需求,“根据产品编码或者产品名称的拼音简码检索数据库与之匹配的产品字典数据”显然是不满足这个需求的,我们此前定义的数据结构之中没有定义拼音简码,我们现在来增加上,并且修正此前定义的几个bug。

WG[YF_6C1I3NS40`E%V18M4

         然后重新生成代码,输出目录选择本解雇方案代码目录,不要选中“生成解雇方案”:

image
          因为生成的代码采用了分部的的结构,数据层中与数据表、实体定义相关的对象定义信息都保存的项目的Generat目录下的名称带有Generat的代码文件中,而自定义的数据层业务逻辑被保存在项目目录中的不带Generat的代码文件之中,也就是说,当数据对象的定义发生变更并且重新生成代码文件后,不会覆盖我们编写的自定义处理,只覆盖与数据对象定义相关的代码文件,以保护程序员的投资。

实现我们的业务

         对于字典的查询业务处理,我们需要在数据层接口IProductList编写一个数据查询方法void GetProductList(string code)并在SQLServer实现层项目中实现这个定义: 

 

1           public   void  GetProductList( string  code)
2          {
3              Condition condition  =   this .CreateCondition();
4              condition.AddElement( " CODE " , code, ElementType.MatchPrefix);
5              condition.AddElement( " PYCODE " , code, ElementType.MatchPrefix,ElementCombineType.Or);
6              condition.AddOrderElement( " IDN " true );
7               this .Query(condition);
8          }

 

         UI代码之中增加一个查询结果显示代码:

 

 1           internal   void  LoadDictList()
 2          {
 3              IProductList dictList  =  DALHelper.DALManager.CreateProductList();
 4              dictList.GetProductList( this .tbSeach.Text);
 5 
 6               try
 7              {
 8                   this .Cursor  =  Cursors.WaitCursor;
 9                   this .lvInfo.BeginUpdate();
10                   this .lvInfo.Tag  =  dictList;
11                   this .lvInfo.Items.Clear();
12                   foreach  (IProduct dict  in  dictList.Rows)
13                  {
14                      ListViewItem item  =   new  ListViewItem( new   string [] {  string .Empty, dict.Code, dict.Name, dict.Spec, dict.Unit,dict.PYCode, dict.Description },  0 );
15                      item.Tag  =  dict;
16                       this .lvInfo.Items.Add(item);
17                  }
18              }
19               finally
20              {
21                   this .lvInfo.EndUpdate();
22                   this .Cursor  =  Cursors.Default;
23              }
24          }

 

         字典的添加与修改处理,我们在UI层中增加如下窗体:

%7I{P[[3[]9ERAYCE{X)Z1J

         并增加如下数据显示与写回代码:

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 1           public  IProduct Product
 2          {
 3               get
 4              {
 5                   return   this .product;
 6              }
 7               set
 8              {
 9                   this .product  =  value;
10 
11                   if  (value  !=   null )
12                  {
13                       this .DataDisplay();
14                  }
15              }
16          }
17 
18           private   void  DataDisplay()
19          {
20               this .tbCode.Text  =   this .Product.Code;
21               this .tbName.Text  =   this .Product.Name;
22               this .tbSpec.Text  =   this .Product.Spec;
23               this .tbUnit.Text  =   this .Product.Unit;
24               this .tbDescription.Text  =   this .Product.Description;
25               this .tbPYCode.Text  =   this .Product.PYCode;
26          }
27 
28           bool  VerifyInput()
29          {
30               return   true ;
31          }
32 
33           private   void  btnOK_Click( object  sender, EventArgs e)
34          {
35               if  ( ! this .Validate())
36              {
37                   this .closed  =   - 1 ;
38                   return ;
39              }
40 
41               try
42              {
43                  IProduct dict  =   null ;
44 
45                   if ( this .Product  ==   null )
46                  {
47                      dict  =  DALHelper.DALManager.CreateProduct();
48                      dict.Idn  =  dict.GetMaxIdn();
49                  }
50                   else
51                  {
52                      dict  =   this .Product;
53                  }
54 
55                  dict.Code  =   this .tbCode.Text;
56                  dict.Name  =   this .tbName.Text;
57                  dict.Spec  =   this .tbSpec.Text;
58                  dict.Unit  =   this .tbUnit.Text;
59                  dict.Description  =   this .tbDescription.Text;
60                  dict.PYCode  =   this .tbPYCode.Text;
61 
62                  
63                   if ( this .Product  == null )
64                  {
65                      dict.Insert() ; //
66                       this .Product  =  dict;
67                  }
68                   else
69                      dict.Update();
70 
71                   this .closed  =   0 ;
72              }
73               catch (System.Exception exc)
74              {
75                  MessageBox.Show( this " 在保存药品字典时出错,错误: "   +  exc.Message,  " 错误提示 " , MessageBoxButtons.OK, MessageBoxIcon.Error);
76                   this .closed  =   - 1 ;
77              }
78          }

 

         字典的删除业务,我们安排在当选择某个商品字典之后可以通过工具条或者快捷菜单中的“删除”完成操作,我们来看看其处理代码:

 

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 1           internal   void  ProductDel()
 2          {
 3               if  ( this .lvInfo.SelectedItems.Count  <   1 return ;
 4 
 5               if (MessageBox.Show( this " 是否确认删除所选择的药品字典? " " 确认 " , MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)  ==  DialogResult.No)
 6              {
 7                   return ;
 8              }
 9 
10               try
11              {
12                  
13                   foreach (ListViewItem item  in   this .lvInfo.SelectedItems)
14                  {
15                      IProduct dict  =  item.Tag  as  IProduct;
16                      dict.Delete();
17                  }
18 
19                   foreach (ListViewItem item  in   this .lvInfo.SelectedItems)
20                  {
21                       this .lvInfo.Items.Remove(item);
22                  }
23              }
24               catch (System.Exception exc)
25              {
26                  MessageBox.Show( this " 在删除药品字典时出错,错误: "   +  exc.Message,  " 错误提示 " , MessageBoxButtons.OK, MessageBoxIcon.Error);
27              }
28          }

 

我们来编译并且运行这个示例:

image 

           有关本例子所涉及的数据表结构请参考基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载:http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文完整代码下载:Product.Demo.rar

 

链接

一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录

AgileEAS.NET平台开发指南-系列目录

AgileEAS.NET应用开发平台介绍-文章索引

AgileEAS.NET平台应用开发教程-案例计划

AgileEAS.NET官方网站

敏捷软件工程实验室

QQ群:116773358

目录
相关文章
|
3月前
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
173 10
|
27天前
|
前端开发 Android开发
WinForm 直接运行 Admin.NET
本文介绍了如何将 Admin.NET 以 WinForm 桌面程序模式运行,简化了手动配置 Web 服务的过程,便于演示和作为单机软件使用。通过添加特定 NuGet 包、修改 `Program.cs` 和 `Form1.cs` 文件,并调整项目配置,最终实现了在 WinForm 中嵌入 WebView 组件显示 Admin.NET 界面的效果。
22 0
WinForm 直接运行 Admin.NET
|
1月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
1月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
3月前
|
数据采集 JSON API
.NET 3.5 中 HttpWebRequest 的核心用法及应用
【9月更文挑战第7天】在.NET 3.5环境下,HttpWebRequest 类是处理HTTP请求的一个核心组件,它封装了HTTP协议的细节,使得开发者可以方便地发送HTTP请求并接收响应。本文将详细介绍HttpWebRequest的核心用法及其实战应用。
152 6
|
4月前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
69 0
|
4月前
|
开发者 API Windows
从怀旧到革新:看WinForms如何在保持向后兼容性的前提下,借助.NET新平台的力量实现自我进化与应用现代化,让经典桌面应用焕发第二春——我们的WinForms应用转型之路深度剖析
【8月更文挑战第31天】在Windows桌面应用开发中,Windows Forms(WinForms)依然是许多开发者的首选。尽管.NET Framework已演进至.NET 5 及更高版本,WinForms 仍作为核心组件保留,支持现有代码库的同时引入新特性。开发者可将项目迁移至.NET Core,享受性能提升和跨平台能力。迁移时需注意API变更,确保应用平稳过渡。通过自定义样式或第三方控件库,还可增强视觉效果。结合.NET新功能,WinForms 应用不仅能延续既有投资,还能焕发新生。 示例代码展示了如何在.NET Core中创建包含按钮和标签的基本窗口,实现简单的用户交互。
78 0
|
4月前
|
Java Spring 自然语言处理
Spring 框架里竟藏着神秘魔法?国际化与本地化的奇妙之旅等你来揭开谜底!
【8月更文挑战第31天】在软件开发中,国际化(I18N)与本地化(L10N)对于满足不同地区用户需求至关重要。Spring框架提供了强大支持,利用资源文件和`MessageSource`实现多语言文本管理。通过配置日期格式和货币符号,进一步完善本地化功能。合理应用这些特性,可显著提升应用的多地区适应性和用户体验。
45 0
|
4月前
|
开发者 C# Android开发
Xamarin 与 .NET:解锁现代化移动应用开发的超级武器——深入探讨C#与.NET框架如何赋能跨平台应用,实现高效编码与卓越性能
【8月更文挑战第31天】Xamarin 与 .NET 的结合为开发者提供了强大的平台,用于构建现代化移动应用。通过 C# 和 .NET 框架,Xamarin 可以实现一次编写、多平台运行,覆盖 iOS、Android 和 Windows。这种方式不仅节省了开发时间和成本,还保证了应用的一致性和高质量。Xamarin 是一个开源框架,专为跨平台移动应用开发设计,允许使用 C# 语言和 .NET 核心库构建原生应用,并访问各平台特定功能。微软维护的 Xamarin 是 Visual Studio 生态系统的一部分,极大地提高了开发效率。
93 0
下一篇
DataWorks