通常我们在处理编辑窗体时。往往会遇到数据绑定。例如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. RabbitMQ学习系列(四): 几种Exchange 模式

    上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ.今天说些理论的东西,Exchange 的几种模式. AMQP协议中的核心思 ...

  2. 浅谈Android样式开发之layer-list

    引言 在开发某些有层叠效果App时,我们第一个想到的就是让UI进行切图.下面我们来这样的一个例子.如图所示: 上图Tab的背景效果,和带阴影的圆角矩形,是怎么实现的呢?大部分的人会让美工切图,用点九图 ...

  3. Indesign中GREP的应用

    1.查找m2,m3中的2或3:代码:(?<=m|M)(2|3)(?!\d)(查找这个可以统一改成上标) 2.删除段首空格:代码:^\s+(?=\w{2,}) 3.删除尾随空白:代码:\s+$ 4 ...

  4. angularjs之Restangular用法

    参考资料: angularjs 获取服务端口数据的方法(三种) 学习-[前端]-angularjs基本框架以及向服务器发送请求的方法 Restangular on Angular

  5. iOS中如何监测来电

    http://blog.csdn.net/liujinlongxa/article/details/44207587

  6. rcu机制

    转载自:再谈Linux内核中的RCU机制-MagicBoy2010-ChinaUnix博客 http://blog.chinaunix.net/uid-23769728-id-3080134.html ...

  7. maven向本地仓库导入jar包(处理官网没有的jar包)

    对于官网没有的jar包,maven向本地仓库导入jar包用如下命令 mvn install:install-file -DgroupId=包名 -DartifactId=项目名 -Dversion=版 ...

  8. 耿丹CS16-2班第四次作业汇总

    Deadline: 2016-10-13 12:00 作业内容 实验3-1 分别使用while循环.do while循环.for循环求1+2+3+ --+100. 实验3-2 分别使用while循环. ...

  9. Android 学习资源收集

    1.2015最流行的Android组件.工具.框架大全 地址  http://www.open-open.com/lib/view/open1436262653692.html

  10. (转载)html中table的使用方法

      colspan表示该一储存格向右打通的栏数. rowspan表示该一储存格向下打通的栏数. colspan是表示横向合并单元格,colspan=“3”表示水平合并三个td rowspan是表示竖直 ...