一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示ORM对象与DataGridView的绑定技术-商品字典的另一个实现

简介: 回顾与说明     前面我们把“商品字典”、“商品入库”、“商品库存查询”、“商品入库查询”四个模块已经概括或者详细的演示了一个管理信息系统的典型应用场景,按照原来的打算,WinForm篇的例子系统中的几个模块就告一段落了。

回顾与说明

    前面我们把“商品字典”、“商品入库”、“商品库存查询”、“商品入库查询”四个模块已经概括或者详细的演示了一个管理信息系统的典型应用场景,按照原来的打算,WinForm篇的例子系统中的几个模块就告一段落了。

    由于好多朋友都问我,你的例子中大量使用ListView控件,很想知道是否可以支持DataGridView控件,所以我就有想到重新用DataGridView写一下“商品字典”模块。

本文内容

    关于“商品字典”的实现及其业务应用场景请参见一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)一文。

    今天本文的主要内容是AgileEAS.NET平台中的ORM对象与DataGridView的绑定,在AgileEAS.NET平台的ORM体系之中,有一个ITable接口,他继承了数据绑定接口IListSource,并且ITable的Rows属性为EntityCollection对象本身就是一个List<IEntity>,那么通过ITable.Rows也是可以实现数据绑定的。

    本文的例子中,我只演示商品字典数据的绑定与修改,并且修改也使用了一个偷懒的方法,不是最优的实现,另外关于字典的删除和增加我也没有实现,有兴趣的朋友自己实现吧。

    下面我们就来开始干活吧,第一件事,还是拖控件堆界面。

制做界面

      首先,我们需要在UI项目中增加一个WinForm窗体ProductDictForm拖动控件达到如下效果:

4(@_E8DGYJ1[8KU$W%JFUO7

 

      在这里,我们需要注意的是需要向界面放一个dataGridView,并且设置一下他的列,当然了大家也可以直接使用BindingSource绑定到Product.DAL.Interface.IProduct之上。

编写绑定代码

      下面我们来写“查询”、“打印”两个按钮的事件处理代码:

 1:  void LoadDictList()
 2:  {
 3:      currentDict = DALHelper.DALManager.CreateProduct();
 4:   
 5:      dictList = DALHelper.DALManager.CreateProductList();
 6:      dictList.GetProductList(this.tbSearch.Text);
 7:   
 8:      //两种方式都支持
 9:      this.dataGridView1.DataSource = dictList;
10:      //this.dataGridView1.DataSource = dictList.Rows;
11:  }
12:   
13:  private void btnSearch_Click(object sender, EventArgs e)
14:  {
15:      this.LoadDictList();
16:  }
17:   
18:  private void btnPrint_Click(object sender, EventArgs e)
19:  {
20:      if (dictList == null)
21:      {
22:          MessageBox.Show("没有需要打印的数据!", "提?示?", MessageBoxButtons.OK, MessageBoxIcon.Information);
23:          return;
24:      }
25:   
26:      if (this.printForm == null)
27:          this.printForm = new PrintViewDialog();
28:   
29:      //
30:      System.IO.TextReader textReader = null;
31:      try
32:      {
33:          string fileName = Path.Combine(Application.StartupPath, "Reports\\商品字典.rdl");
34:          textReader = new System.IO.StreamReader(fileName);
35:          this.printForm.SourceRdl = textReader.ReadToEnd();
36:      }
37:      finally
38:      {
39:          if (textReader != null)
40:              textReader.Close();
41:      }
42:   
43:      this.printForm.DataObject = dictList;
44:      this.printForm.PrintPreview();
45:  }
46:   

       接下来看看编辑处理代码:

 1:  private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
 2:  {
 3:      if (this.dataGridView1.CurrentRow != null)
 4:      {
 5:          IProduct product = this.dataGridView1.CurrentRow.DataBoundItem as IProduct;
 6:          currentDict.Code = product.Code;
 7:      }
 8:  }
 9:   
10:  private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
11:  {
12:      IProduct product = this.dataGridView1.CurrentRow.DataBoundItem as IProduct;
13:   
14:      if (product.Code == currentDict.Code)
15:          product.Update();
16:      else
17:      {
18:          product.Update();
19:          product.Idn = product.GetMaxNewIdn();
20:          currentDict.Delete();
21:          product.Insert();
22:      }
23:  }

 运行结果

编译并运行程序,我们看一下运行效果:

image

 

         打印预览:

image

 

导出报表,选择导出Excel格式:

UAC988(LZ@[X6QW)G%XZ(NO

 

      我写完这篇post,WinForm篇的例程即将就结束了,接下来,我会在WinForm篇之中安排几篇文章讲例程的部署问题,说是部署问题,其他也不是部署问题,而是例子是以何种方式运行,是直接连接数据库,还是通过服务桥接器连接到远程服务器进行业务处理。

      本文我就说到这里,对AgileEAS.NET平台感兴趣的朋友呢,可以下载了完整代码之后自己看看,有问题请及时的和我联系。

      有关本例所涉及的数据表结构请参考基于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月前
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
160 23
|
4月前
|
网络协议 C#
基于.NET WinForm开发的一款硬件及协议通讯工具
基于.NET WinForm开发的一款硬件及协议通讯工具
|
5月前
|
前端开发 Android开发
WinForm 直接运行 Admin.NET
本文介绍了如何将 Admin.NET 以 WinForm 桌面程序模式运行,简化了手动配置 Web 服务的过程,便于演示和作为单机软件使用。通过添加特定 NuGet 包、修改 `Program.cs` 和 `Form1.cs` 文件,并调整项目配置,最终实现了在 WinForm 中嵌入 WebView 组件显示 Admin.NET 界面的效果。
67 0
WinForm 直接运行 Admin.NET
|
5月前
|
开发框架 监控 .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
|
4月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
116 5
|
7月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
123 7
|
7月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
147 0
|
11月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
277 0
|
8月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
104 0
|
8月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
153 0
下一篇
oss创建bucket