动态数据类型转换
2014-06-05 00:00
183 查看
这是我的工具包里的一部分代码
部分方法已被我移值到我的框架去,做为实体的基类的默认方法。
代码
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Web.UI;
using
System.Reflection;
using
System.Web.UI.WebControls;
namespace
Toolkit
{
///
<summary>
///
表的字段设置/获到值操作类
///
</summary>
public
class
TableValue
{
Object entity;
//
实体对象
Type typeInfo;
//
实体对象类型
///
<summary>
///
表的字段设置/获到值操作类构造函数
///
</summary>
///
<param name="entityInstance">
传进表的实体
</param>
public
TableValue(Object entityInstance)
{
entity
=
entityInstance;
typeInfo
=
entity.GetType();
&nb
3ff0
sp; }
///
<summary>
///
将实体的值设置到控件中
///
</summary>
///
<param name="ct"></param>
public
void
SetTo(Control ct)
{
string
propName
=
ct.ID.Substring(
3
);
object
value
=
GetPropertyValue(propName);
switch
(ct.GetType().Name)
{
case
"
TextBox
"
:
((TextBox)ct).Text
=
Convert.ToString(value);
break
;
case
"
Literal
"
:
((Literal)ct).Text
=
Convert.ToString(value);
break
;
case
"
Label
"
:
((Label)ct).Text
=
Convert.ToString(value);
break
;
case
"
DropDownList
"
:
((DropDownList)ct).SelectedValue
=
Convert.ToString(value);
break
;
case
"
CheckBox
"
:
bool
tempValue;
if
(Convert.ToString(value)
==
"
1
"
)
{
tempValue
=
true
;
}
else
{
bool
.TryParse(Convert.ToString(value),
out
tempValue);
}
((CheckBox)ct).Checked
=
tempValue;
break
;
}
}
///
<summary>
///
将控件的值设置到实体中[默认从控件中自动获取值]
///
</summary>
///
<param name="ct">
控件
</param>
///
<param name="value">
自定义值,若此值存在,则不从控件中获取值
</param>
public
void
GetFrom(Control ct,
object
value)
{
string
propName
=
ct.ID.Substring(
3
);
if
(value
==
null
)
{
switch
(ct.GetType().Name)
{
case
"
TextBox
"
:
value
=
((TextBox)ct).Text.Trim();
break
;
case
"
Literal
"
:
value
=
((Literal)ct).Text;
break
;
case
"
Label
"
:
value
=
((Label)ct).Text;
break
;
case
"
DropDownList
"
:
value
=
((DropDownList)ct).SelectedValue;
break
;
case
"
CheckBox
"
:
value
=
((CheckBox)ct).Checked;
break
;
3ff0
}
}
SetPropertyValue(propName, value);
}
///
<summary>
///
将控件的值设置到实体中
///
</summary>
///
<param name="ct">
控件
</param>
public
void
GetFrom(Control ct)
{
GetFrom(ct,
null
);
}
///
<summary>
///
获取对象指定属性的值
///
</summary>
///
<param name="obj">
对象
</param>
///
<param name="propName">
属性名称
</param>
///
<returns></returns>
private
object
GetPropertyValue(
string
propName)
{
PropertyInfo prop
=
typeInfo.GetProperty(propName);
return
prop.GetValue(entity,
null
);
}
///
<summary>
///
设置对象指定属性的值
///
</summary>
///
<param name="obj">
对象
</param>
///
<param name="propName">
属性名称
</param>
///
<returns></returns>
private
void
SetPropertyValue(
string
propName,
object
value)
{
PropertyInfo prop
=
typeInfo.GetProperty(propName);
Type valueType
=
null
;
if
(prop.PropertyType.Name.Contains(
"
Nullable
"
))
{
valueType
=
Type.GetType(prop.PropertyType.FullName.Substring(
19
, prop.PropertyType.FullName.IndexOf(
"
,
"
)
-
19
));
}
else
{
valueType
=
prop.PropertyType;
}
try
{
if
(valueType.Name
!=
"
DateTime
"
||
Convert.ToString(value)
!=
""
)
{
value
=
System.ComponentModel.TypeDescriptor.GetConverter(valueType).ConvertFrom(Convert.ToString(value));
prop.SetValue(entity, value,
null
);
}
}
catch
{
}
}
}
}
部分方法已被我移值到我的框架去,做为实体的基类的默认方法。
代码
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Web.UI;
using
System.Reflection;
using
System.Web.UI.WebControls;
namespace
Toolkit
{
///
<summary>
///
表的字段设置/获到值操作类
///
</summary>
public
class
TableValue
{
Object entity;
//
实体对象
Type typeInfo;
//
实体对象类型
///
<summary>
///
表的字段设置/获到值操作类构造函数
///
</summary>
///
<param name="entityInstance">
传进表的实体
</param>
public
TableValue(Object entityInstance)
{
entity
=
entityInstance;
typeInfo
=
entity.GetType();
&nb
3ff0
sp; }
///
<summary>
///
将实体的值设置到控件中
///
</summary>
///
<param name="ct"></param>
public
void
SetTo(Control ct)
{
string
propName
=
ct.ID.Substring(
3
);
object
value
=
GetPropertyValue(propName);
switch
(ct.GetType().Name)
{
case
"
TextBox
"
:
((TextBox)ct).Text
=
Convert.ToString(value);
break
;
case
"
Literal
"
:
((Literal)ct).Text
=
Convert.ToString(value);
break
;
case
"
Label
"
:
((Label)ct).Text
=
Convert.ToString(value);
break
;
case
"
DropDownList
"
:
((DropDownList)ct).SelectedValue
=
Convert.ToString(value);
break
;
case
"
CheckBox
"
:
bool
tempValue;
if
(Convert.ToString(value)
==
"
1
"
)
{
tempValue
=
true
;
}
else
{
bool
.TryParse(Convert.ToString(value),
out
tempValue);
}
((CheckBox)ct).Checked
=
tempValue;
break
;
}
}
///
<summary>
///
将控件的值设置到实体中[默认从控件中自动获取值]
///
</summary>
///
<param name="ct">
控件
</param>
///
<param name="value">
自定义值,若此值存在,则不从控件中获取值
</param>
public
void
GetFrom(Control ct,
object
value)
{
string
propName
=
ct.ID.Substring(
3
);
if
(value
==
null
)
{
switch
(ct.GetType().Name)
{
case
"
TextBox
"
:
value
=
((TextBox)ct).Text.Trim();
break
;
case
"
Literal
"
:
value
=
((Literal)ct).Text;
break
;
case
"
Label
"
:
value
=
((Label)ct).Text;
break
;
case
"
DropDownList
"
:
value
=
((DropDownList)ct).SelectedValue;
break
;
case
"
CheckBox
"
:
value
=
((CheckBox)ct).Checked;
break
;
3ff0
}
}
SetPropertyValue(propName, value);
}
///
<summary>
///
将控件的值设置到实体中
///
</summary>
///
<param name="ct">
控件
</param>
public
void
GetFrom(Control ct)
{
GetFrom(ct,
null
);
}
///
<summary>
///
获取对象指定属性的值
///
</summary>
///
<param name="obj">
对象
</param>
///
<param name="propName">
属性名称
</param>
///
<returns></returns>
private
object
GetPropertyValue(
string
propName)
{
PropertyInfo prop
=
typeInfo.GetProperty(propName);
return
prop.GetValue(entity,
null
);
}
///
<summary>
///
设置对象指定属性的值
///
</summary>
///
<param name="obj">
对象
</param>
///
<param name="propName">
属性名称
</param>
///
<returns></returns>
private
void
SetPropertyValue(
string
propName,
object
value)
{
PropertyInfo prop
=
typeInfo.GetProperty(propName);
Type valueType
=
null
;
if
(prop.PropertyType.Name.Contains(
"
Nullable
"
))
{
valueType
=
Type.GetType(prop.PropertyType.FullName.Substring(
19
, prop.PropertyType.FullName.IndexOf(
"
,
"
)
-
19
));
}
else
{
valueType
=
prop.PropertyType;
}
try
{
if
(valueType.Name
!=
"
DateTime
"
||
Convert.ToString(value)
!=
""
)
{
value
=
System.ComponentModel.TypeDescriptor.GetConverter(valueType).ConvertFrom(Convert.ToString(value));
prop.SetValue(entity, value,
null
);
}
}
catch
{
}
}
}
}
相关文章推荐
- 【JavaWeb-16】静态参数封装、3种动态参数封装、数据类型转换、struts标签、验证器
- 动态数据类型转换
- 关于selectize,ajax动态获取数据,数据类型转换
- wince动态加载图片,数据类型转换
- Struts2 (动态调用、接收请求参数、类型转换、数据验证、拦截器)Day:2018/2/7
- .NET中三种数据类型转换的区别:(type), type.Parse, Convert类
- VC常用数据类型使用转换详解
- 日期类型数据的转换与比较
- 日期类型数据的转换与比较
- 数据类型转换笔记
- 利用C++的stringstream对各种数据类型转换
- 数据类型转换的整理
- 常用数据类型使用转换详解
- 对论坛中有关数据类型转换的总结
- 数据类型的转换
- java中的数据类型转换
- VC常用数据类型使用转换详解
- VC常见数据类型转换详解
- VC数据类型转换
- VC学习资料收集(2):关于数据类型转换