这是我的工具包里的一部分代码
部分方法已被我移值到我的框架去,做为实体的基类的默认方法。

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
{
}
}
}
}
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号![]() |
Donation(扫码支持作者):支付宝:![]() |
Donation(扫码支持作者):微信:![]() |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)