一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-在UI中应用DataUIMapper组件

系列回顾

      WinForm篇我用了一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实现字典的打印两篇文章实例演示了一个基于AgileEAS.NET实现一个简单的增加、删除、修改、查询与打印的典型的简单应用案例,这应该是一个典型的MIS系统的应用场景。

本文内容

      本文我将在WinForm篇前面两篇文章所介绍的案例基础上介绍字典编辑场景中应用DataUIMapper组件,有关于DataUIMapper组件的介绍请参考.NET快速开发实践之应用IExtenderProvider实现对象与UI控件的绑定一文。

代码改造

      在这里我也就不再介绍DataUIMapper组件的详细功能了,直接看看改造过程,我们先来看看原先的显示与写回代码:

 1  private void DataDisplay_Old(IProduct dict)
 2     {
 3  this.tbCode.Text = dict.Code;
 4  this.tbName.Text = dict.Name;
 5  this.tbSpec.Text = dict.Spec;
 6  this.tbUnit.Text = dict.Unit;
 7  this.tbDescription.Text = dict.Description;
 8  this.tbPYCode.Text = dict.PYCode;
 9     }
10 
11  private void WriteBack_Old(IProduct dict)
12     {
13         dict.Code = this.tbCode.Text;
14         dict.Name = this.tbName.Text;
15         dict.Spec = this.tbSpec.Text;
16         dict.Unit = this.tbUnit.Text;
17         dict.Description = this.tbDescription.Text;
18         dict.PYCode = this.tbPYCode.Text;
19     }

      原来的代码需要手工实现UI控件与数据对象的交互比如dict.Code = this.tbCode.Text这样的写法,那么换成DataUIMapper组件应该怎么做呢。

      首先在VS开发环境中把DataUIMapper组件添加到VS环境的工具箱,需要说明的是DataUIMapper组件由程序集EAS.Data.DataUIMapper.dll承载,然后向窗体ProductDictEditor拖放一个DataUIMapper组件,然后设定DataUIMapper组件的数据源属性:

      DataUIMapper组件可以通过BindingSource数据实现向数据对象的绑定,也就是可以属性窗口中很方便的设定数据源,当然,开发人员也可以通过其他方式设定数据源,比如可以通过修改ProductDictEditor.Designer.cs文件指定DataUIMapper组件的数据源对象:

      虽然可以通过修改*.Designer.cs,但我还是建议通过GUI文件完成DataUIMapper组件的数据源设定,当完成DataUIMapper组件的数据源设定之后,我们就可以使用很方便的Data<==>UI绑定了,可以通过DataUIMapper组件的Mappings属性(集合)来配置数据对象与UI控件的交互关系:

      在属性设定界面上有一个选项,“常用/全部”,选择“常用”之后控件下拉列表中会把一些不常用的UI控件过虑,但如果使用了一些特殊控件,被考虑了你需要选择“全部”,则可以完成对UI中的所有控件进行设定。

      当我们完成绑定Data<==>UI绑定关系之后,我们只需要修改原先的数据显示与写回代码如下即可:

1  private void DataDisplay(IProduct dict)
2     {
3  this.dataUIMapper1.UpdateUI(dict);
4     }
5 
6  private void WriteBack(IProduct dict)
7     {
8  this.dataUIMapper1.UpdateObject(dict);
9     }

       今天的例子就到这儿,在UI编程中还会涉及到控件的焦点跳车、输入验证、输入法控件等一个辅助的扩展编程技术,在本系列中将不在详细讲述,有关于这些内容,请参考.NET快速开发实践中的IExtenderProvider扩展组件.NET快速开发实践之应用IExtenderProvider实现输入法自动切换.NET快速开发实践之应用IExtenderProvider实现控件焦点跳转等几篇文章。

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

      最后,声明一句,不欢迎“巴克球”!我不想再说什么,别来凑热闹了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(十四)在项目中使用 jQuery

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(十四)在项目中使用 jQuery 前情回顾 在上一篇博文中,我们讲到了,...

2037
来自专栏闻道于事

IDEA使用

最重要的: Ctrl+Shift+A  打开搜索 定位代码: 项目之间的跳转: ? 文件之间的跳转: 打开最近文件列表  Ctrl + E     打开最近修改...

2854
来自专栏全沾开发(huā)

如何从0开发一个Atom组件

如何从0开发一个Atom组件 最近用Atom写博客比较多,然后发现一个很严重的问题。。 没有一个我想要的上传图片的方式,比如某乎上边...

3645
来自专栏逸鹏说道

VSCode中文乱码问题+Git环境配置

异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html 1.VSCode中文乱码问题 (file...

4358
来自专栏Jackson0714

30分钟全面解析-图解AJAX原理

41112
来自专栏Theo Tsao

Vim的基本使用(二)

本文包含Vim的基本使用有: 可视模式、指定计数、重复命令、外部命令、命令行编辑、文件编辑、分割窗口、GUI命令、配置。 另附一张Vim Cheat Sheet...

1262
来自专栏源码之家

Linux CentOS下,浏览器乱码,支持中文解决;以及中文输入法的安装

3944
来自专栏闪电gogogo的专栏

sublime学习笔记

1 sublime的几个优点 1.操作简单上手快 2.支持多点编辑:ctrl + 光标 3.基于Package Control强大的包管理功能 4.闪电一样的查...

3166
来自专栏守望轩

Visual Studio 2008 每日提示(十)

#91、查找组合框的一些有趣的用法 原文链接:How to have fun with the Find Combo Box 操作步骤: 按Ctrl+D 转...

3607
来自专栏liulun

基于.net开发chrome核心浏览器【三】

本篇我们讲解怎么用CefGlue开发一个最简单的浏览器 一: CefGlue是建立在Cef项目之上的, Cef项目是C/C++的项目; CefGlue只不过是通...

3295

扫码关注云+社区

领取腾讯云代金券