你是否在开发WinForm应用程序时,通常使用DataGrid来作为数据的层现,是否会用到DataGrid分页,添加序号,添加全选,反选功能,有时还会用到不同数据显示不同的颜色.DataGridGost为我们做了这一切,你只需要简单的设置,几乎不用写一行代码就能轻松完成.下面我们一起来进入DataGridGost神奇的世界
[关键词]DataGrid,DataGrid全选,自动添加序号.
1.系统概述
DataGridGos主要是封装了对分页,添加自动编号,添加全选列,转义列(比如,为2时显示加急,3显示不加急),指定条件的行着色等功能,指定条件的行才能被钩选.
2、部份实现代码
添加全选列
{
DataGridColorBoolColumn dgbolChoose_temp;
dgbolChoose_temp = new DataGridColorBoolColumn();
//
// dgbolChoose_temp选择列
//
dgbolChoose_temp.HeaderText = _CheckBoxTitle;
dgbolChoose_temp.MappingName = " NetlmChoose_2006 " ;
dgbolChoose_temp.FalseValue = false ;
dgbolChoose_temp.NullValue = "" ;
dgbolChoose_temp.TrueValue = true ;
dgbolChoose_temp.Width = _ChekcBoxWidth;
int size = _CurrentDataGrid.TableStyles[ 0 ].GridColumnStyles.Count + 1 ;
DataGridColumnStyle[] dgcsarry = new DataGridColumnStyle[size];
dgcsarry[ 0 ] = dgbolChoose_temp;
for ( int i = 0 ; i < size - 1 ; i ++ )
{
dgcsarry[i + 1 ] = _CurrentDataGrid.TableStyles[ 0 ].GridColumnStyles[i];
}
_CurrentDataGrid.TableStyles[ 0 ].GridColumnStyles.Clear();
_CurrentDataGrid.TableStyles[ 0 ].GridColumnStyles.AddRange(dgcsarry);
}
添加自动编号列
{
DataGridColorTextColumn dgSerNum_temp;
dgSerNum_temp = new DataGridColorTextColumn();
dgSerNum_temp.HeaderText = " 序号 " ;
dgSerNum_temp.MappingName = " NetlmSerNumUID " ;
dgSerNum_temp.Alignment = HorizontalAlignment.Center;
dgSerNum_temp.Width = _SerNumWidth;
int size = _CurrentDataGrid.TableStyles[ 0 ].GridColumnStyles.Count + 1 ;
DataGridColumnStyle[] dgcsarry = new DataGridColumnStyle[size];
dgcsarry[ 0 ] = dgSerNum_temp;
for ( int i = 0 ; i < size - 1 ; i ++ )
{
dgcsarry[i + 1 ] = _CurrentDataGrid.TableStyles[ 0 ].GridColumnStyles[i];
}
_CurrentDataGrid.TableStyles[ 0 ].GridColumnStyles.Clear();
_CurrentDataGrid.TableStyles[ 0 ].GridColumnStyles.AddRange(dgcsarry);
}
在对输入的条件直接转换为布尔值时,遇到些困难,开始我想调用CodeDom直接生成表达式的值,但这样做并没有成功。比如 UserName==shumi 其中UserName表示的是列名,需要dr["UserName"].ToString()来读出列的值,而在CodeDom中并不能读出列的值,不知道那位高手有好的解决方案。我的做法是自已写了一个类似编译原理中的词法分析的类,采用四元式的方式分析表达式并求出布尔值,但由于学编译原理的知识差不多全还给老师了,所以在对四元式进行DAG图化简时还存在一定的问题。
下面是部份实现代码:
{
// 将表达式分词
ArrayList ary = StrToBoolExpression.ConvertExpression(str);
for ( int i = 0 ;i < ary.Count;i ++ )
{
if (i < ary.Count - 1 && ! IsOperator(ary[i].ToString()))
{
// 如果是字段,取出字段所表示的值
if (ary[i + 1 ].ToString() != " ! " && ary[i + 1 ].ToString() != " && " && ary[i + 1 ].ToString() != " || " )
{
ary[i] = dr[ary[i].ToString()].ToString();
}
}
}
try
{
return bool .Parse(StrToBoolExpression.ComputePostfix(ary).ToString());
}
catch
{
return false ;
}
}
后记:
这几天感冒了又拉肚子,好难受,从前天晚上都没有吃过任何东西,今天终于吃了两个鸡蛋,身体开始好转了,所以整理了这篇文章。先休息一下,下一篇我将介绍根据DataGridGost自动生成DataGridTableStyle的方法,并对自已开发的这个小工具使用方法做个简单的介绍。这里先提供给大家下载,希望能给大家的开发带来帮助.
文件下载:
类库文档 示例源代码 DataGridTableStyle自动生成工具
接着上午没有写完的说一下DataGridTableStyle自动生成工具的用法
软件界面如上图所示
设置好数据库连接后单击连接按扭,将加载当前数据库中的所有表和字段注释.在左边钩选需要生成的表,如果需要将,整型字段转义(1,显示为男,2显示为女)就在相应的列名行钩选转义.在这里我设定主键是不能为转义列的
上面的显示就是用到了DataGridGhost
生成的代码如下:
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
15
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
16
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
18
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
20
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
23
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
26
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
30
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
32
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
34
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
45
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
78
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
82
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
83
![ExpandedSubBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
84
![ExpandedBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)