winform代码分析object数据库

做这部分功能的时候,上网搜索了很多资料,发现很少涉及到这方面的解决方案,找了相关的问题帖子,很多人都叫使用视图去处理,当然,用视图是可以解决这个问题,但是,这么多个表,都用视图去搞,那还得做这么多个视图...........这肯定不科学了。还有如果用视图去做,那么数据实体就与实际的表不一致了,所以,我们需要找到一个解决DataGridView的某个列需要按照某个字典的数据去展现数据。
我们在页面上显示这种字典数据的控件叫ComboBox,同样的,我们发现DataGridView中也可以把某列设置成ComboBox这样的方式,也就是DataGridViewComboBoxColumn列。下面是我实现DataGridView中的某列按照字典数据去展现数据的代码:

[csharp] view plaincopy

  1. dtInfo = new DataGridViewComboBoxColumn();
  2. DataGridViewComboBoxColumn cbColumn = dtInfo as DataGridViewComboBoxColumn;
  3. cbColumn.DataSource= curDictionary.Details;
  4. cbColumn.DisplayMember = "DetailName";
  5. cbColumn.ValueMember = "DetailTagValue";

代码分析说明:创建DataGridViewComboBoxColumn列cbColumn,然后对该列设置字典数据源:cbColumn.DataSource= curDictionary.Details;,然后设置展现值的属性:cbColumn.DisplayMember = "DetailName";(把数据源中的DetailName信息显示在DataGridView中),设置显示值所对应的保存在数据库中的值:cbColumn.ValueMember = "DetailTagValue";这部分的代码与ComboBox控件的原理是一样的,因此,在DataGridView控件中显示字典数据与ComboBox显示字典数据的原理是一样的,难度并不大。
上面所描述的,仅仅是如何在DataGridView中展现字典数据,我们在做数据字典时往往还存在另外一个问题:那就是数据类型的问题,字典表通常为了适应更多的字典数据,一般情况下,我们的DetailTagValue是设置成字符串,但用到该字典数据的表,很多时候不是字符串的,是整形的值,在这时候,DataGridView就会报错,那是因为DetailTagValue的数据类型与DataGridView中对应的列的字段类型不一样引起的,为了解决这个问题,我们需要把DetailTagValue的值设置成object类型,下面我们看下DetailTagValue属性是怎么处理的:

[csharp] view plaincopy

  1. /// <summary>DetailTagValue:属性标签值(保存在数据库中的值)</summary>
  2. public virtual object DetailTagValue
  3. {
  4. get { return pgConvert.GetObjectValueByDbType(dataType, detailTagValue); }
  5. set { detailTagValue = value; }
  6. }

赋值是直接赋值,获取值的时候,根据字段的类型来转换成目标对象的类型。这样转换后就不存在数据类型不匹配而引起的错误了。

WinForm中的DataGridView控件显示数据字典方案2的更多相关文章

  1. winform中的Datagridview控件与List同步修改

    Winform的datagridview是个很强大的控件,可用datatable, List等型的数据与之绑定显示. 可惜的是,绑定的LIst不能同步更新. 估计是为了改进List不能同步更新的问题, ...

  2. C# winform中的datagridview控件标头加入checkbox,实现全选功能。

    /// <summary> /// 给DataGridView添加全选 /// </summary> public class AddCheckBoxToDataGridVie ...

  3. ADO.NET之使用DataGridView控件显示从服务器上获取的数据

    今天回顾下ADO.NET中关于使用DataGridiew控件显示数据的相关知识 理论整理: 使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据. SqlDataAd ...

  4. C#在WinForm中重写ProgressBar控件(带%的显示)

    废话少说,直接上码: namespace csPublish { [ToolboxItem(true)] class textProgressBar : System.Windows.Forms.Pr ...

  5. Winform中修改WebBrowser控件User-Agent的方法(已经测试成功)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  6. WPF中嵌入WinForm中的webbrowser控件

    原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...

  7. winform中的dateTimePicker控件设置默认值为空

    winform中的dateTimePicker控件设置默认值为空   第一步:设置Format的属性值为“Custom” 第二步:设置CustomFormat的属性值为空,需要按一个空格键

  8. WinForm开发(1)——DataGridView控件(1)——C# DataGridView控件用法介绍

    DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行, ...

  9. Winform中使用printDocument控件打印pictureBox中的二维码照片

    场景 Winform中使用zxing和Graphics实现自定义绘制二维码布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

随机推荐

  1. bzoj1412: [ZJOI2009]狼和羊的故事

    空地之间开始没有连然后一直WA...题意混乱...尴尬. #include<cstdio> #include<cstring> #include<iostream> ...

  2. kendo grid输入框验证方法

    $("#grid").kendoGrid({ dataSource: dataSrc, //toolbar: ["save", "取消"], ...

  3. ejabberd、jabber、jabberd、xmpp辨析

    Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用.    XMPP(可扩展消息处理现场协议)是基于可扩展 ...

  4. 一个好用的hibernate泛型dao

    以前从springside2.0上搞下来的很好用的,基本实现dao零编码只要配置xml文件就行了. 先看图: 一共4层,com.demonstration.hibernate.basedao是我加的用 ...

  5. 保护眼睛,开启浏览器的夜间模式 顺便学下!important的作用

    打开笔记本程序,复制以下代码 *{background-image: none !important; background: none !important; background:#333333 ...

  6. Storm入门教程 第三章Storm集群安装部署步骤、storm开发环境

    一. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...

  7. Delphi word编辑

    private void but_Table_Click(object sender, EventArgs e) { object Nothing = System.Reflection.Missin ...

  8. duilib List控件,横向滚动时列表项不移动或者移动错位的bug的修复

    转载请说明出处,谢谢~~ 这篇博客已经作废,只是留作记录,新的bug修复博客地址:http://blog.csdn.net/zhuhongshu/article/details/42264673 之前 ...

  9. Windows安装pomelo过程

    安装总要出点状况的.操作系统是win7 64bit. 为了保证顺利,打开的是VS2012命令行提示.运行 npm install -g pomelo 经过一系列输出,最后安装提示完成了.但是输入 po ...

  10. springmvc的一些优化设置

    1.配置文件的优化: 无需使用 <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotatio ...