通常我们在处理编辑窗体时。往往会遇到数据绑定。例如combobox控件绑定数据字典可能是我们经常用到的。然而在我的winform快速开发平台中我是如何处理这个频繁的操作呢?

首先,我们要绑定combobox动态数据,大致都是来自于数据字典的数据绑定,那么思路来了,我们需要绑定的是通过获取字典属性来绑定ComboBox控件。大家都知道ComboBox控件中存在显示数据,和值数据对数据值进行绑定。

那么此时我们需要定义一个实体类:

     /// <summary>
/// ComboBoxModel数据绑定实体类
/// </summary>
public class BaseComboBoxModel
{ /// <summary>
/// 实体编号
/// </summary>
public string Id { set; get; }
/// <summary>
/// 树显示名称
/// </summary>
public string Name { set; get; }
}

这个类主要用于处理一个通用的数据集合。这样便于我们在后续处理中更加简洁和方便。

对数操作的数据字典相信大家都有自己的通用的框架,EF,dapper,或其他的ORM 或自己的DBHelper.这些都无关紧要。重要的是我们通过这样的一个设计让我们的代码更加简洁。维护起来更加的方便。

程序的出发点始终是能让初级程序员写出高级程序员代码质量作为目标。

言归正传,对于编辑窗体,我们需要创建一个FormBaseEdit基窗体。由他来构造我们大多数的通用方法。我们在创建关于Edit窗体时进行对FormBaseEdit的继承。这样所有有关于Edit级别的操作都会继承过来。

我们在FormBaseEdit窗体的操作方法

 /// <summary>
/// 绑定数据字典
/// </summary>
/// <param name="comboBox">绑定控件</param>
/// <param name="key">数据字典编码</param>
public virtual void LoadComboBox(ComboBox comboBox, string key)
{
var list = _baseDataDictionaryDetailBll.GetDataDictionaryDetailListByCode(key)
.Select(p => new BaseComboBoxModel()
{
Id = p.DataDictionaryId,
Name = p.Name
}).ToList();
list.Insert(, new BaseComboBoxModel() { Id = string.Empty, Name = "请选择" });
comboBox.DataSource = list;
comboBox.DisplayMember = "Name";
comboBox.ValueMember = "Id";
}

这样一个通用的完善的ComboBox绑定控件就已经完成了。

通过这样的构造我们在项目中在进行对数据字典的数据绑定就得心应手了。我们的小伙伴不需要关心如何绑定的数据。 只需要在自己的编辑窗体中进行一个数据配置就可以完成对数据操作。 代码同时也越发的简洁。

下图看一下我们的使用:下图中简单的2句话就可以将数据字典的动态数据绑定到我们的控件中。用起来还是蛮方便的。

通过如下方法我们也可以绑定一下常用的数据如城市联动菜单:

相同的思路:下面是构建的绑定TreeView的实体结构

 public class BaseTreeViewModel
{
  /// <summary>
  /// 实体编号
  /// </summary>
  public string Id { set; get; }
  /// <summary>
  /// 树显示名称
  /// </summary>
  public string Name { set; get; }
  /// <summary>
  /// 父编号
  /// </summary>
  public string ParentId { set; get; }
} public class BaseTreeViewMenuModel : BaseTreeViewModel
{
  /// <summary>
  /// 分类
  /// </summary>
  public bool IsForm { set; get; }   /// <summary>
  /// 命名空间
  /// </summary>
  public string Namespace { set; get; }   /// <summary>
  /// 调用类
  /// </summary>
  public string Class { set; get; }
}

Winform快速开发平台: 基础模块,代码抽象,通用代码、代码生成。 让程序员有相对较多的时间去专注于业务,摆脱重复性的工作,以及量级别的工作。通过有效的代码生成,尽可能的减少程序员编写的无用功代码! 每天进步一点点。

希望大家提供宝贵意见!非常感谢!

Winform快速开发平台系列:

官网连接

1.winform快速开发平台 -> 让有限的资源创造无限的价值!

2.winform快速开发平台 -> 基础组件之分页控件

3.winform快速开发平台 -> 绑定ComboBox数据控件

4.winform快速开发平台 -> 工作流组件(仿GooFlow)

5.winform快速开发平台 -> 通用权限管理之动态菜单

winform快速开发平台 -> 快速绑定ComboBox数据控件的更多相关文章

  1. winform快速开发平台 -> 基础组件之分页控件

    一个项目控件主要由及部分的常用组件,当然本次介绍的是通用分页控件. 处理思想:我们在处理分页过程中主要是针对数据库操作. 一般情况主要是传递一些开始位置,当前页数,和数据总页数以及相关关联的业务逻辑. ...

  2. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 数据权限增强、范围权限增强

    并不是不想做B\S的管理工具,只是精力实在不够,由于用户权限管理组件是基础组件.所以C\S的也无妨,不会有几个人在乎Oracle,SQLServer是否不b\s的,注重的是功能性能,请大家不要纠结与是 ...

  3. winform快速开发平台->让有限的资源创造无限的价值!

    最近一直在维护一套自己的快速开发平台. 主要应对针对C/S架构下的项目.然而对winform这快,还真没有看到过相对好的快速开发平台, 何为快速,在博客园逛了了好久, 预览了很多通用权限管理系统. 确 ...

  4. winform快速开发平台 -> 通用权限管理之动态菜单

    这几个月一直忙APP的项目,没来得及更新项目,想想该抽出时间整理一下开发思路,跟大家分享,同时也希望得到宝贵的建议. 先说一下我们的权限管理的的设计思路,首先一个企业信息化管理系统一定会用到权限管理, ...

  5. winform快速开发平台 -> 工作流组件(仿GooFlow)

    对于web方向的工作流,一直在用gooflow对于目前我的winform开发平台却没有较好的工作流组件.  针对目前的项目经验告诉我们.一个工作流控件是很必要的. 当然在winform方面的工作流第三 ...

  6. vivo浏览器的快速开发平台实践-总览篇

    一.什么是快速开发平台 快速开发平台,顾名思义就是可以使得开发更为快速的开发平台,是提高团队开发效率的生产力工具.近一两年,国内很多公司越来越注重研发效能的度量和提升,基于软件开发的特点,覆盖管理和优 ...

  7. SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)

    做了这么多项目,经常会使用到级联.联动的情况. 如:省.市.县.区.一级分类.二级分类.三级分类.仓库.货位. 方式:有表单需要做级联的,还是表格行上需要做级联操作的. 实现:实现方法也有很多种方式. ...

  8. SNF开发平台WinForm之十五-时间轴控件使用-SNF快速开发平台3.3-Spring.Net.Framework

    一.显示效果如下: 二.在控件库里选择UCTimeAxis 拖拽到窗体里. 三.加入以下代码,在load事件里进行调用就可以运行了. #region 给时间轴控件加载数据 private void U ...

  9. SNF开发平台WinForm之十-Excel导入-SNF快速开发平台3.3-Spring.Net.Framework

    7.1运行效果: 2.Excel导入开发实现 2.1. 创建窗体,修改命名空间 新增的窗体命名“FrmImport表名”,这个导入窗口比较其它窗口会特殊一些,需要继承BaseFormImport父级窗 ...

随机推荐

  1. latex均方极限符号l.i.m在lyx下的输入方法

    $\mathop{l.i.m}\limits_{x\to +\infty}$ 命令说明: 1.指定数学环境$$ 2.\mathop{l.i.m}指数学符号自定义为l.i.m 3.\limits_{x\ ...

  2. SPSS课程学习思路及流程

    数据挖掘领域对行的分析

  3. 推荐几款我一直在用的chrome插件(上)

    我用的chrome插件挺多的,所谓工欲善其事必先利其器,我热衷于搜寻好用的工具来让我平时的工作事半功倍.下面介绍几款我正在用的感觉还不错的插件,如果大家还有其它好用的(肯定有,chrome插件库太庞大 ...

  4. leetcode--Majority Element

    题目链接:https://leetcode.com/problems/majority-element/ 算法类型:分治法 题目分析:获取长度为n的数组中的众数(出现次数大于等于⌊ n/2 ⌋) 代码 ...

  5. Oracle常用语法

    Oracle常用语句语法汇总 Oracle10g 1 第一章Oracle命令 a) 系统管理员连接 conn */* as sysdba b) 查询当前用户 show user c) 创建新用户 cr ...

  6. 使用Navicat Preminum时,发现的几个好用的功能

  7. ubuntu下C++连接mysql数据库

    参考了该博客的做法:http://zhmy.michael.blog.163.com/blog/static/861578792012101244715692/ 1.安装mysql: sudo apt ...

  8. (原创)RecyclerView结合xUtils2.6实现滚动时不加载item,xUtils2.6的源码分析与改造

    我们知道xUtils中的bitmapUtils与listview相配合可以实现滚动时暂停加载 只需要一句话: listview.addOnScrollListener(new PauseOnScrol ...

  9. iOS6_自动约束 Constraints

    取消Constraints(约束) 问题描述:xib文件设计的时候控件已经摆好位置,但是每次调试的时候控件的位置又乱了 解决方法:选中 xib文件,在右侧第一项(Identity and type)的 ...

  10. AxureRp 打开SVN上的团队项目

    打开Axure,在菜单项中,点击 "团队" 菜单,选择 "获取团队项目": 切换到 "SVN" 选项, 填写正确的Axure项目的路径,打开 ...