前言:
此刻咱们对“dotnetbar图片控件”都比较注重,咱们都需要了解一些“dotnetbar图片控件”的相关文章。那么小编也在网上搜集了一些对于“dotnetbar图片控件””的相关文章,希望你们能喜欢,各位老铁们快快来学习一下吧!在我们开发WinForm界面的时候,往往需要绑定数据字典操作,也就是绑定一些下拉列表或者一些列表显示等,以便我们方便选择数据操作,常见的字典绑定操作就是对下拉列表的处理,本文是基于DevExpress界面的一些处理操作,原理也适用于常规Winform界面或者DotNetBar控件界面处理。另外对于缓存的处理,一般在基于单机版数据或者局域网API接口处理的字典绑定,速度是比较快的,基本上可以不用考虑缓存的处理,但是对于基于互联网API接口的数据处理,往往受限于带宽等原因,请求数据的速度没有那么快,那么需要做好数据缓存处理,才可能更好的提高用户体验。
DevExpress WinForms Subscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网
常规字典列表的绑定
对于普通的下拉列表控件,我们绑定操作就是先获取字典数据列表,然后对它的数据项进行添加操作即可,为了方便,我们往往做成一个扩展函数的方式来进行处理,并把这些通用的扩展函数放到界面基类库里面方便重用,这样我们可以在设计到界面的数据绑定的时候,非常方便的调用了。
如类似下面的扩展函数定义。
/// <summary>/// 绑定下拉列表控件为指定的数据字典列表/// </summary>/// <param name="combo">下拉列表控件</param>/// <param name="itemList">数据字典列表</param>/// <param name="defaultValue">控件默认值</param>/// <param name="emptyFlag">是否加入空值选项</param>public static void BindDictItems(this ComboBoxEdit combo, List<string> itemList, string defaultValue, bool emptyFlag = true){combo.Properties.BeginUpdate();//可以加快combo.Properties.Items.Clear();combo.Properties.Items.AddRange(itemList);if (emptyFlag){combo.Properties.Items.Insert(0, "");}if (itemList.Count > 0){combo.SetDropDownValue(defaultValue);}combo.Properties.EndUpdate();//可以加快}
还有有时候我们需要一个显示文本、值的键值对来对字典进行处理,如定义的CListItem对象:
/// <summary>/// 框架用来记录字典键值的类,用于Comobox等控件对象的值传递/// </summary>[Serializable]public class CListItem{/// <summary>/// 显示内容/// </summary>public string Text { get; set; }/// <summary>/// 实际值内容/// </summary>public string Value { get; set; }}
这样我们绑定列表的扩展函数在定义一个函数,如下所示。
/// <summary>/// 绑定下拉列表控件为指定的数据字典列表/// </summary>/// <param name="combo">下拉列表控件</param>/// <param name="itemList">数据字典列表</param>/// <param name="defaultValue">控件默认值</param>/// <param name="emptyFlag">是否加入空值选项</param>public static void BindDictItems(this ComboBoxEdit combo, List<CListItem> itemList, string defaultValue, bool emptyFlag = true){combo.Properties.BeginUpdate();//可以加快combo.Properties.Items.Clear();combo.Properties.Items.AddRange(itemList);if (emptyFlag){combo.Properties.Items.Insert(0, new CListItem(""));}if (itemList.Count > 0){if (!string.IsNullOrEmpty(defaultValue)){combo.SetComboBoxItem(defaultValue);}else{combo.SelectedIndex = 0;}}combo.Properties.EndUpdate();//可以加快}
当然,除了上面的这两个处理,我们还可以定义很多不同类型的重载方法,以便更方便处理相关的控件的字典数据绑定。
对于固定数据源List<string>、或者List<CListItem>来说,我们绑定的操作就非常简单。
List<CListItem> itemList= new List<CListItem>() { new CListItem("有"), new CListItem("无") };txtItem.BindDictItems(itemList);
然后获取对应字典值的方式,我们可以定义一个扩展函数来处理,如下代码所示。
/// <summary>/// 获取下拉列表的值/// </summary>/// <param name="combo">下拉列表</param>/// <returns></returns>public static string GetComboBoxValue(this ComboBoxEdit combo){CListItem item = combo.SelectedItem as CListItem;if (item != null){return item.Value;}else{return "";}}
对于以上的操作,我们这里还没有涉及到字典模块里面的数据源,只是提供一些常规的固定列表,我们知道,大多数的数据字典我们是通过字典模块来进行维护的。
因此我们也需要动态的从字典库上获取对应的字典集合来进行绑定。字典的数据,我们可以通过字典类型或者字典代码来获取,如下是通过字典类型获取对应的字典列表代码。
BLLFactory<DictData>.Instance.GetDictByDictType(dictTypeName);
有了这些数据的获取方法,我们就可以通过扩展函数来进一步扩展我们绑定字典类别的方式了,如下扩展函数所示。
/// <summary>/// 绑定下拉列表控件为指定的数据字典列表/// </summary>/// <param name="combo">下拉列表控件</param>/// <param name="dictTypeName">数据字典类型名称</param>/// <param name="defaultValue">控件默认值</param>public static void BindDictItems(this ComboBoxEdit combo, string dictTypeName, string defaultValue){Dictionary<string, string> dict = BLLFactory<DictData>.Instance.GetDictByDictType(dictTypeName);List<CListItem> itemList = new List<CListItem>();foreach (string key in dict.Keys){itemList.Add(new CListItem(key, dict[key]));}BindDictItems(combo, itemList, defaultValue);}
使用的时候,就非常简单了,如下代码是实际项目中对字典列表绑定的操作,字典数据在字典模块里面统一定义的。
/// <summary>/// 初始化数据字典/// </summary>private void InitDictItem(){txtInDiagnosis.BindDictItems("入院诊断");txtLeaveDiagnosis.BindDictItems("最后诊断");//初始化代码this.txtFollowType.BindDictItems("随访方式");this.txtFollowStatus.BindDictItems("随访状态");}
这样就非常简化了我们对字典数据源的绑定操作了,非常方便易读,下面是其中一个功能界面的下拉列表展示。
DevExpress WinForm
DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
本文转载自:博客园 - 伍华聪
标签: #dotnetbar图片控件