如上文DataGridView控件用法(二)所提到的,DataGridView不支持一列显示多个按钮,但还是有许多人自己想法做到一列显示多个按钮。比如爱英思躺团队借助EasyCode代码生成器实现了这一功能,而且实现的很漂亮,如下图:

EasyCode是一个用于生成.Net代码的功能强大的代码生成器(帮助.NET开发人员快速开发,收费软件,可免费试用3天)。EasyCode的官方网站:http://www.budeasycode.com,本文重点不在EasyCode怎么生成代码。而是要记一下,我怎么利用http://www.cnblogs.com/BudEasyCode/archive/2012/02/29/2373702.html博文中作者提到的、他用EasyCode代码生成器所生成的一个部门管理系统源码(源代码下载地址:http://files.cnblogs.com/BudEasyCode/DgvColumn.rar),仿制了上面2个按钮。下面是我仿制按钮的过程:
(..更多内容)
在DataGridView控件用法(一)中已经显示出列表数据,这时我们需要对每行数据记录进行编辑,需要添加“编辑”、“删除”、“查看”这样的按钮,并希望这些按钮共用一个共同的表头可以叫“编辑”或“操作”。但在WinForm中我们常用的DataGridView控件,不支持在一列中显示多个按钮。怎么办?网上对DataGridView控件的列或行的合并有很多博文,大致思想有2种,一种是设法让其一列可以显示多个按钮,另一种是每列显示一个按钮(如本文上面的做法),然后将这3列合并,合并的时候是利用DataGridView的CellPainting事件对表头进行重绘,网友们说该方法存在页面往下拉动时表格绘制偏差或绘制延迟不刷新等问题,似乎后面这种方法用的多些。
(..更多内容)
一、 DataGridView控件的用法(如何绑定、修改其中某一列值、添加序号列、交换任意2列显示顺序)
1. DataGridView绑定数据源。
DataGridView可以由2种方式来显示数据库中的某张表的数据。第一种方法是利用控件自带的绑定数据源功能(就是在页面上拖放一个DataGridView控件,其右上角会出来一个三角形,点三角形就可以对该DataGridView要显示的哪个表哪些列数据进行设置),根据提示一步步设置好数据源并选择需要显示出来的列,还可以在属性里面设置该DataGridView表格的样式,此法简单快捷,但个人感觉可控性不好,环境自己生成很多东西,后面想调整哪里不好找,比如直接绑定数据库的表显示的是该表中的所有数据,不好进行条件过滤(即不能自己写SQL语句),很多时候我们需要的是满足一定条件的记录(我们希望自己写SQL语句),而不是所有记录(好像可以通过设置过滤器等来解决这以问题)。因此我选用第二种方法,就是自己写代码来控制DataGridView控件,包括写SQL语句查询某些记录,用DataSet装载查询记录,然后用DataSet中的数据填充DataGridView,设置控件的样式等等,都可以通过人工写代码实现,比第一种方法灵活,代码透明自己有数,尽量少用控件,代码看起来更连贯。下面针对第二种方法显示数据库表中的数据进行阐述:
在页面上拖放一个DataGridView控件,Name属性设为UserdataGridView,在对应的cs文件里写SQL读取数据库中USER表中的数据,并绑定到 UserdataGridView 显示,代码如下: (..更多内容)
目前正在看姜云飞教授写的《人工智能理论及其应用》,其中总结了 Arizona State Univ. 的Subbarao Kambhampati教授对于半序规划的研究成果(联培申请时投过这个人,可惜石沉大海了。。。),始终不明白半序规划、偏序规划和全序规划到底是什么意思,虽然大概意思自己心里清楚,但是就是说不出个究竟,于是参考了一些资料,做个笔记。
以下主要参考自 http://hi.baidu.com/lifa868/blog/item/8723b9d245ed05093bf3cfa9.html
偏序(Partial Order),也就是半序,其数学定义如下:
设A是一个非空集,P是A上的一个关系,若关系P是自反的、反对称的、和传递的,则称P是集合A上的偏序关系。
即P适合下列条件:
(1)对任意的a∈A,(a,a)∈P;
(2)若(a,b)∈P且(b,a)∈P,则a=b;
(3)若(a,b)∈P,(b,c)∈P,则(a,c)∈P,则称P是A上的一个偏序关系。带偏序关系的集合A称为偏序集或半序集。
若P是A上的一个偏序关系,我们用a≤b来表示(a,b)∈P。
举如下例子说明偏序关系:
1、实数集上的小于等于关系是一个偏序关系。
2、设S是集合,P(S)是S的所有子集构成的集合,定义P(S)中两个元素A≤B当且仅当A是B的子集,即A包含于B,则P(S)在这个关系下成为偏序集。
3、设N是正整数集,定义m≤n当且仅当m能整除n,不难验证这是一个偏序关系。注意它不同于N上的自然序关系。
而全序(Total Order)的定义如下
在集合A中,如果对于任意a∈A, b∈A, 有aRb或bRa,即A中的每对元素都满足关系R,则集合A上的偏序R是全序的或线性序的。
总结来说,全序的一定就是偏序的,偏序的不一定是全序的。全序即对于集合中任两个元素都满足关系R,而偏序则不成立。
下面看个例子

图a代表偏序,也就是半序,图b代表全序。
(..更多内容)