这是我的工具包里的一部分代码
部分方法已被我移值到我的框架去,做为实体的基类的默认方法。
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();
}
/// <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 ;
}
}
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.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();
}
/// <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 ;
}
}
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
{
}
}
}
}
版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:
http://www.cnblogs.com/cyq1162/archive/2010/04/18/1500639.html