近日开发一个基于WinForm的工具,用到了DataGridViewComboBoxColumn。

关于数据:

  1. DataGridView的数据源是代码生成的DataTable
  2. DataGridViewComboBoxColumn的数据源是一个List<>,内容类型是自创的Text-Value类
  3. Value类型是Object,实际使用时存储的值是KeyValuePair<string,string>

问题出现:

考虑到使用时,用户会对特定项设置空值,于是在列表中加入了一个{Text = string.Empty, Value = null}的项目。

但Debug时设空值报错,弹出提示称:“System.ArgumentException: 不能将 Column "XXX" 设置为null。请改用DBNull。……要替换此默认对话框,请处理 DataError 事件。”

于是按要求把Value改成了DBNull.Value,再运行……

问题依旧!

搜索关键词,找到以下内容:

http://blog.csdn.net/cnjack/article/details/4561376

大意是添加DataGridView.DataError事件的处理,并让处理为空,以此屏蔽这个错误。

再运行,不再报错,但空值也不能正确写入数据源。看来这个方法在这里只是治标不治本。

试图在DataError事件处理中加入对空值的处理,无果。

在反复的尝试中,最终找的解决方法:

把Text设为非空字符串(不能为null或string.Empty)

原理不明……

其他注意事项:

  1. 在给DataGridView设置数据源之前,一定要先给DataGridViewComboBoxColumn设置数据源。
  2. 给DataGridViewComboBoxCell设置值时,确认该值已存在于对应DataGridViewComboBoxColumn的数据源中。

关于DataGridViewComboBoxColumn的二三事的更多相关文章

  1. Java并发编程二三事

    Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...

  2. linux杂记(十二?) 关于账号和密码的二三事

    关于密码的二三事 关于账号和密码的二三事 久了不更linux的相关知识,实在是懒得想内容点(纯粹是懒).那么今天就来谈谈关于linux密码和账号的重要概念. 假如你的主机遭到入侵,那么对方的第一个侵入 ...

  3. MySQL5.7关于密码二三事

    MySQL5.7关于密码二三事 第一个:update user set password=password('root') where user='root' and host='localhost' ...

  4. Java中的匿名内部类及内部类的二三事

    匿名内部类适合创建那些只需要使用一次的类,它的语法有些奇怪,创建匿名内部类会立即创建一个该类的实例,这个类定义立即消失,且不能重复使用. 定义匿名类的格式如下: new 实现接口() |父类构造器(实 ...

  5. Emacs 启动优化二三事

    Emacs 启动优化二三事 */--> div.org-src-container { font-size: 85%; font-family: monospace; } p {font-siz ...

  6. WinForm二三事(三)Control.Invoke&Control.BeginInvoke

    http://www.cnblogs.com/yuyijq/archive/2010/01/11/1643802.html 这个系列从2009年写到2010年,差点又成太监文.随着WPF/Silver ...

  7. iOS7下滑动返回与ScrollView共存二三事

    [转载请注明出处] = =不是整篇复制就算注明出处了亲... iOS7下滑动返回与ScrollView共存二三事 [前情回顾] 去年的时候,写了这篇帖子iOS7滑动返回.文中提到,对于多页面结构的应用 ...

  8. 一只代码小白git托管路上的二三事

    [经验]一只代码小白git托管路上的二三事 写在前面的话 寒假的时候,娄老师给我们布置了代码托管的作业,并要求把托管地址发给学委.因假期的时候没有带电脑回家,所以只是在手机上草草注册了,也稀里糊涂就将 ...

  9. YTU 1008: 童年生活二三事

    1008: 童年生活二三事 时间限制: 1000 Sec  内存限制: 64 MB 提交: 842  解决: 592 题目描述 Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去. ...

随机推荐

  1. [RxJS] AsyncSubject and ReplaySubject - Learn the Differences

    We can use Subject as Observable and Observer: // Subject should be only used to emit value for priv ...

  2. 个人常常使用的一些Eclipse技巧

    引言 为了加快开发效率,方便地浏览源代码,重构以及重写一些方法等,Eclipse给我们提供了非常多方便的快捷键以及小技巧.以下是我总结一下经常使用的快捷键和技巧. 快捷键 清理控制台(console) ...

  3. @ConfigurationProperties注解

    @Value获取值和@ConfigurationProperties获取值比较 |            | @ConfigurationProperties | @Value | | ------- ...

  4. WCF学习笔记——契约不能少了set

    我定义的WCF契约里,有一个类,里面的属性,有一个因为只读,所以只写了个get.结果客户端就报错. [DataContract] public class UserItem { public User ...

  5. [RK3288][Android6.0] 调试笔记 --- 普通串口的添加 【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/54574073   标签: rk3288 串口添加 2017-01-16 14:52 1079 ...

  6. JS容易犯错的this和作用域

    var someuser = { name: 'byvoid', func: function() { console.log(this.name); } }; var foo = { name: ' ...

  7. LESS2CSS for sumlime text2

    Windows下的安装 Less2Css插件依赖lessc这个工具,在windows下可以下载或者用git cloneless.js-windows到本地目录.然后把目录地址加入到环境变量PATH的中 ...

  8. spring:为javabean的集合对象注入属性值

    spring:为JavaBean的集合对象注入属性值 在 spring 中可以对List.Set.Map 等集合进行配置,不过根据集合类型的不同,需要使用不同的标签配置对应相应的集合. 1.创建 Ts ...

  9. php的self和this

    <?phpclass ss{ public static $code; public function __construct( $code ) { self::$code=$code; //这 ...

  10. XOJ测试 2016.5.22

    哈哈 我是最先使用XOJ的人之一 膜拜zrt ing 首先是XOJ神奇的界面 还没有建设完的OJ是这个样子的 一共有5道题 这次小测有3道题 是T2T3T4 首先是骑士精神 (BZOJ1085) 上来 ...