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