在WinForm开发中,我们是不是为绑定界面控件的数据而每个控件每个控件的赋值?在保存修改时是不是也是每个控件每个控件的赋值到实体中?字段一多,那简直就是噩梦。有没有像Web中那样方便的方法直接就自动映射了呢?现在不用如此繁琐,在RDIFramework.NET开发框架的WinForm部分新增了界面控件到实体,实体到界面控件自动绑定,一句话就搞定了,非常的方便。主要是引用“RDIFramework.WinForm.Utilities.dll”dll文件,再调用下面两个方法即可:
1、实体到界面控件的自动映射:FormBinding.BindObjectToControls(TestEntity, this);
2、界面控件到实体的自动映射:FormBinding.BindControlsToObject(TestEntity, this);
效果如下图所示:
下面给出上面的测试界面的全部代码供大家参考:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
using
System;
namespace
RDIFramework.Test
{
using
RDIFramework.Utilities;
using
RDIFramework.WinForm.Utilities;
public
partial
class
FrmFormBindingTest : BaseForm
{
ExampleEntity TestEntity =
new
ExampleEntity();
public
FrmFormBindingTest()
{
InitializeComponent();
}
public
override
void
FormOnLoad()
{
base
.FormOnLoad();
BindCategory();
FormBinding.BindObjectToControls(TestEntity,
this
);
}
private
void
BindCategory()
{
BasePageLogic.BindCategory(
base
.UserInfo, ProductCategory,
"ProductCategory"
);
BasePageLogic.BindCategory(
base
.UserInfo, comboBox1,
"Gender"
);
}
private
void
btnEntityToControl_Click(
object
sender, EventArgs e)
{
FormBinding.BindObjectToControls(TestEntity,
this
);
}
private
void
btnControlToEntity_Click(
object
sender, EventArgs e)
{
FormBinding.BindControlsToObject(TestEntity,
this
);
this
.richTextBox1.Text = TestEntity.ToString();
}
private
void
btnClose_Click(
object
sender, EventArgs e)
{
this
.Close();
}
}
public
class
ExampleEntity
{
public
string
Text1 {
get
;
set
; }
public
string
Text2 {
get
;
set
; }
public
string
comboBox1 {
get
;
set
; }
public
string
ProductCategory {
get
;
set
; }
public
DateTime? DateTime1 {
get
;
set
; }
public
decimal
? MaskText1 {
get
;
set
; }
public
int
? Int1 {
get
;
set
; }
public
int
Enabled1 {
get
;
set
; }
public
ExampleEntity() {
Text1 =
"ValueText1"
;
Text2 =
"ValueText2"
;
DateTime1 = BusinessLogic.ConvertToDateTime(DateTime.Now.AddDays(-2));
MaskText1 = BusinessLogic.ConvertToNullableDecimal(12345.12);
Int1 = 124;
Enabled1 = 1;
comboBox1 =
"男"
;
ProductCategory =
"其他"
;
}
public
override
string
ToString()
{
string
returnValue =
"Text1: "
+ Text1 +
"\r Text2: "
+ Text2;
returnValue +=
"\r comboBox1:"
+ comboBox1 +
"\r Int1:"
+ Int1.ToString() +
"\r DateTime1:"
+ DateTime1.ToString() ;
returnValue +=
"\r ProductCategory:"
+ ProductCategory +
"\r MaskText1:"
+ MaskText1.ToString() +
"\r Enabled1:"
+ Enabled1.ToString();
return
returnValue.ToString();
}
}
}
|
本文转自yonghu86博客园博客,原文链接:http://www.cnblogs.com/huyong/p/5522799.html,如需转载请自行联系原作者