根据实体自动为页面控件赋值的方法
前面发过一个为实体自动赋值的方法,与之相对应,在修改的时候我们需要把从数据库获取的实体赋值给页面上的控件,这个方法就实现了这个功能:
/// <summary>
/// 根据实体为页面控件赋值,控件名称需要和实体属性名称一致
/// </summary>
/// <param name="t">实体对象</param>
/// <param name="page">this</param>
/// <param name="controlPrefix">控件前缀</param>
public static void SetValues(T t, System.Web.UI.Page page, string controlPrefix)
{
StringBuilder sb = new StringBuilder();
sb.Append("<script language='javascript'>");
Type type = t.GetType();//获取类型
PropertyInfo[] pi = type.GetProperties();//获取属性集合
sb.Append("try{");
//int i = 0;
foreach (PropertyInfo p in pi)
{
try
{
sb.Append("document.getElementById('" + controlPrefix + p.Name + "').value = '" + p.GetValue(t, null).ToString() + "';");
}
catch
{
}
//i++;
}
sb.Append("}catch(e){}");
sb.Append("</script>");
page.ClientScript.RegisterStartupScript(typeof(string), "setValues", sb.ToString());
}
使用方法:
NewsEntity entity = DataFactory<NewsSqlProvider>.CreateProvider.GetEntity(new NewsEntityKey(_id));
RequestFormToEntity<NewsEntity>.SetValues(entity, this.Page, "ChildSkinControl1_ctl00_");