zoukankan      html  css  js  c++  java
  • winform快速开发平台 -> 快速绑定ComboBox数据控件

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

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

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

     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.这些都无关紧要。重要的是我们通过这样的一个设计让我们的代码更加简洁。维护起来更加的方便。

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

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

    我们在FormBaseEdit窗体的操作方法

     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绑定控件就已经完成了。

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

    下图看一下我们的使用:下图中简单的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快速开发平台 -> 让有限的资源创造无限的价值!

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

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

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

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

  • 相关阅读:
    django orm中filter(条件1).filter(条件2)与filter(条件1,条件2)的区别 哈欠涟涟的日志 网易博客
    提示:ERROR 1044 (42000): Access denied for user
    取消选中的区域
    1.XML复习、HTML DOM 复习 2.simpleXML方式解析XML 3.XPath 4,MVC
    JSP的内置对象(session)
    每月自评之三:2013年3月
    HDU1405:The Last Practice
    一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下:
    一个经典实用的 IPtables Shell 脚本
    static class 静态类
  • 原文地址:https://www.cnblogs.com/liuyunsheng/p/4863808.html
Copyright © 2011-2022 走看看