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. css虚线和css双实线

    border线型主要有:1.dotted[点状]2.solid[实线] 3.double[双实线] 4.dashed;[虚线] 如果一个CSS这样写:border-style:dotted solid ...

  2. busybox filesystem matrix-gui-2.0 undefined function json_encode()

    /******************************************************************************** * matrix-gui-2.0 u ...

  3. Java [leetcode 8] String to Integer (atoi)

    问题描述: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ...

  4. 海康、大华IpCamera RTSP地址和格式

    海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username: 用户名.例如 ...

  5. android adt与android sdk有什么关系,他们在开发中各起到什么作用

    ADT(Android Development Tools):目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级 ...

  6. GCC 编译优化指南

    转自: http://www.jinbuguo.com/linux/optimize_guide.html GCC 编译优化指南 作者:金步国[www.jinbuguo.com] 版权声明 本文作者是 ...

  7. centos软件环境

    1,保持能链接外网和yum的可用性. 注意:yum配置项中最好:keepcache=1 2,yum install gcc, gcc-c++, make, cmake, 3, ntfs-3g wget ...

  8. IOC框架Ninject实践总结

    原文地址:http://www.cnblogs.com/jeffwongishandsome/archive/2012/04/15/2450462.html IOC框架Ninject实践总结 一.控制 ...

  9. Handling HTTP 404 Error in ASP.NET Web API

            Introduction: Building modern HTTP/RESTful/RPC services has become very easy with the new AS ...

  10. VS中使用QT调用R脚本

    一开始想直接把R编译成库然后调用R,后来查了n多资料,发现VS中是无法办到的,官方也给出了一句话,大概意思就是没可能在VS中使用R提供的C++接口,大概是涉及到了底层的ABI的原因,具体也不太清楚. ...