一般咱们在处理编辑窗体时。每每会遇到数据绑定。例如combobox控件绑定数据字典多是咱们常常用到的。然而在个人winform快速开发平台中我是如何处理这个频繁的操做呢?html
首先,咱们要绑定combobox动态数据,大体都是来自于数据字典的数据绑定,那么思路来了,咱们须要绑定的是经过获取字典属性来绑定ComboBox控件。你们都知道ComboBox控件中存在显示数据,和值数据对数据值进行绑定。程序员
那么此时咱们须要定义一个实体类:app
1 /// <summary> 2 /// ComboBoxModel数据绑定实体类 3 /// </summary> 4 public class BaseComboBoxModel 5 { /// <summary> 6 /// 实体编号 7 /// </summary> 8 public string Id { set; get; } 9 /// <summary> 10 /// 树显示名称 11 /// </summary> 12 public string Name { set; get; } 13 }
这个类主要用于处理一个通用的数据集合。这样便于咱们在后续处理中更加简洁和方便。框架
对数操做的数据字典相信你们都有本身的通用的框架,EF,dapper,或其余的ORM 或本身的DBHelper.这些都可有可无。重要的是咱们经过这样的一个设计让咱们的代码更加简洁。维护起来更加的方便。post
程序的出发点始终是能让初级程序员写出高级程序员代码质量做为目标。编码
言归正传,对于编辑窗体,咱们须要建立一个FormBaseEdit基窗体。由他来构造咱们大多数的通用方法。咱们在建立关于Edit窗体时进行对FormBaseEdit的继承。这样全部有关于Edit级别的操做都会继承过来。url
咱们在FormBaseEdit窗体的操做方法spa
1 /// <summary> 3 /// 绑定数据字典 5 /// </summary> 7 /// <param name="comboBox">绑定控件</param> 9 /// <param name="key">数据字典编码</param> 11 public virtual void LoadComboBox(ComboBox comboBox, string key) 13 { 15 var list = _baseDataDictionaryDetailBll.GetDataDictionaryDetailListByCode(key) 17 .Select(p => new BaseComboBoxModel() 19 { 21 Id = p.DataDictionaryId, 23 Name = p.Name 25 }).ToList(); 27 list.Insert(0, new BaseComboBoxModel() { Id = string.Empty, Name = "请选择" }); 29 comboBox.DataSource = list; 31 comboBox.DisplayMember = "Name"; 33 comboBox.ValueMember = "Id"; 35 }
这样一个通用的完善的ComboBox绑定控件就已经完成了。设计
经过这样的构造咱们在项目中在进行对数据字典的数据绑定就驾轻就熟了。咱们的小伙伴不须要关心如何绑定的数据。 只须要在本身的编辑窗体中进行一个数据配置就能够完成对数据操做。 代码同时也愈加的简洁。code
下图看一下咱们的使用:下图中简单的2句话就能够将数据字典的动态数据绑定到咱们的控件中。用起来仍是蛮方便的。
经过以下方法咱们也能够绑定一下经常使用的数据如城市联动菜单:
相同的思路:下面是构建的绑定TreeView的实体结构
1 public class BaseTreeViewModel 2 { 3 /// <summary> 4 /// 实体编号 5 /// </summary> 6 public string Id { set; get; } 7 /// <summary> 8 /// 树显示名称 9 /// </summary> 10 public string Name { set; get; } 11 /// <summary> 12 /// 父编号 13 /// </summary> 14 public string ParentId { set; get; } 15 } 16 17 public class BaseTreeViewMenuModel : BaseTreeViewModel 18 { 19 /// <summary> 20 /// 分类 21 /// </summary> 22 public bool IsForm { set; get; } 23 24 /// <summary> 25 /// 命名空间 26 /// </summary> 27 public string Namespace { set; get; } 28 29 /// <summary> 30 /// 调用类 31 /// </summary> 32 public string Class { set; get; } 33 }
Winform快速开发平台: 基础模块,代码抽象,通用代码、代码生成。 让程序员有相对较多的时间去专一于业务,摆脱重复性的工做,以及量级别的工做。经过有效的代码生成,尽量的减小程序员编写的无用功代码! 天天进步一点点。
但愿你们提供宝贵意见!很是感谢!
Winform快速开发平台系列:
1.winform快速开发平台 -> 让有限的资源创造无限的价值!
3.winform快速开发平台 -> 绑定ComboBox数据控件