根据实体自动为页面控件赋值的方法

  前面发过一个为实体自动赋值的方法,与之相对应,在修改的时候我们需要把从数据库获取的实体赋值给页面上的控件,这个方法就实现了这个功能:

 

代码
/// <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_");

 

 

posted @ 2010-07-06 13:59  JasonChou  阅读(343)  评论(0编辑  收藏  举报