Exemple #1
0
        //private static Dictionary<string, Dictionary<string, ModelInfo>> dicCache = new Dictionary<string, Dictionary<string, ModelInfo>>();

        /// <summary>
        /// 填充实体跟页面的对应表
        /// </summary>
        /// <param name="objPage">页面类</param>
        /// <param name="modleType">实体类型</param>
        private static Dictionary <string, ModelInfo> GetPageMapInfo(Control objControl, Type modleType, PrefixType pType)
        {
            Dictionary <string, ModelInfo> handleMapping = new Dictionary <string, ModelInfo>();
            ClassInfoHandle handle  = ClassInfoManager.GetClassHandle(modleType);
            List <Control>  lstCtrs = GetAllContorl(objControl);

            foreach (Control ctr in lstCtrs)
            {
                string id = UpdateModelInfo.GetKey(ctr.ID, pType);
                if (!string.IsNullOrEmpty(id))
                {
                    ModelInfo          info  = new ModelInfo();
                    PropertyInfoHandle pInfo = handle.PropertyInfo[id];
                    if (pInfo != null)
                    {
                        info.Phandle = pInfo;
                        ContorlDefaultPropertyInfo ctrInfo = ControlDefaultValue.GetDefaultPropertyInfoWithoutCache(ctr);
                        info.CtrHandle        = ctrInfo;
                        info.Ctr              = ctr;
                        handleMapping[ctr.ID] = info;
                    }
                }
            }
            return(handleMapping);
        }
        /// <summary>
        /// 获取控件的默认属性的信息
        /// </summary>
        /// <param name="ctr"></param>
        /// <returns></returns>
        private static ContorlDefaultPropertyInfo GetBinderInfo(Control ctr)
        {
            if (ctr == null)
            {
                return(null);
            }
            Type   crlType = ctr.GetType();
            string key     = crlType.FullName;
            ContorlDefaultPropertyInfo defaultInfo = null;

            if (!dicContorlBinder.TryGetValue(key, out defaultInfo))
            {
                defaultInfo = new ContorlDefaultPropertyInfo();
                string strProName = GetContorlBinderName(ctr);
                if (strProName == null)
                {
                    return(null);
                }
                PropertyInfo[] destproper = crlType.GetProperties();
                ///读取属性别名
                foreach (PropertyInfo pinf in destproper)
                {
                    if (pinf.Name == strProName)
                    {
                        defaultInfo.PropertyType   = pinf.PropertyType;
                        defaultInfo.PropertyHandle = FastValueGetSet.GetPropertyInfoHandleWithOutCache(strProName, crlType);
                        defaultInfo.DefaultValue   = GetDefaultPropertyValue(pinf);
                    }
                }
                dicContorlBinder.Add(key, defaultInfo);
            }
            return(defaultInfo);
        }
 /// <summary>
 /// 获取该控件的默认属性
 /// </summary>
 /// <param name="ctr">控件</param>
 /// <returns></returns>
 public static object GetControlDefaultPropertyValue(Control ctr, ContorlDefaultPropertyInfo proInfo)
 {
     //ContorlDefaultPropertyInfo proInfo = GetDefaultPropertyInfo(ctr);
     if (proInfo == null || !proInfo.PropertyHandle.HasGetHandle)
     {
         return(null);
     }
     return(proInfo.PropertyHandle.GetValue(ctr));
 }
        /// <summary>
        /// 重置控件的默认值
        /// </summary>
        /// <param name="ctr">控件</param>
        public static void ResetContorlValue(Control ctr)
        {
            ContorlDefaultPropertyInfo proInfo = GetDefaultPropertyInfo(ctr);

            if (proInfo.DefaultValue != null)
            {
                proInfo.PropertyHandle.SetValue(ctr, proInfo.DefaultValue);
            }
        }
 /// <summary>
 /// 获取该控件的默认属性
 /// </summary>
 /// <param name="ctr">控件</param>
 /// <returns></returns>
 public static object GetControlDefaultPropertyValue(Control ctr, ContorlDefaultPropertyInfo proInfo)
 {
     //ContorlDefaultPropertyInfo proInfo = GetDefaultPropertyInfo(ctr);
     if (proInfo == null)
     {
         return(ctr.Page.Request[ctr.UniqueID]);
     }
     return(proInfo.PropertyHandle.GetValue(ctr));
 }
        /// <summary>
        /// 设置该控件的默认属性
        /// </summary>
        /// <param name="ctr">控件</param>
        /// <param name="value">属性值</param>
        public static void SetControlDefaultPropertyValue(Control ctr, object value)
        {
            ContorlDefaultPropertyInfo proInfo = GetDefaultPropertyInfo(ctr);

            if (proInfo != null)
            {
                object newValue = Convert.ChangeType(value, proInfo.PropertyType);
                proInfo.PropertyHandle.SetValue(ctr, newValue);
            }
        }
        /// <summary>
        /// 获取控件的默认属性的信息
        /// </summary>
        /// <param name="ctr"></param>
        /// <returns></returns>
        internal static ContorlDefaultPropertyInfo GetDefaultPropertyInfo(Control ctr)
        {
            if (ctr == null)
            {
                return(null);
            }
            Type   crlType = ctr.GetType();
            string key     = crlType.FullName;
            ContorlDefaultPropertyInfo defaultInfo = null;

            if (!_dicContorlBinder.TryGetValue(key, out defaultInfo))
            {
                defaultInfo = GetDefaultPropertyInfoWithoutCache(ctr);
                _dicContorlBinder.Add(key, defaultInfo);
            }
            return(defaultInfo);
        }
        /// <summary>
        /// 无缓存的获取控件默认值
        /// </summary>
        /// <param name="ctr"></param>
        /// <returns></returns>
        internal static ContorlDefaultPropertyInfo GetDefaultPropertyInfoWithoutCache(Control ctr)
        {
            Type   crlType    = ctr.GetType();
            string strProName = GetDefaultPropertyName(ctr);
            ContorlDefaultPropertyInfo defaultInfo = null;

            if (strProName != null)
            {
                defaultInfo = new ContorlDefaultPropertyInfo();
                PropertyInfo[] destproper = crlType.GetProperties();
                ///读取属性别名
                foreach (PropertyInfo pinf in destproper)
                {
                    if (pinf.Name.Equals(strProName, StringComparison.CurrentCultureIgnoreCase))
                    {
                        defaultInfo.PropertyType   = pinf.PropertyType;
                        defaultInfo.PropertyHandle = FastValueGetSet.GetPropertyInfoHandleWithOutCache(strProName, crlType);
                        defaultInfo.DefaultValue   = GetDefaultPropertyValue(pinf);
                    }
                }
            }
            return(defaultInfo);
        }
        /// <summary>
        /// 获取该控件的默认属性
        /// </summary>
        /// <param name="ctr">控件</param>
        /// <returns></returns>
        public static object GetControlDefaultPropertyValue(Control ctr)
        {
            ContorlDefaultPropertyInfo proInfo = GetDefaultPropertyInfo(ctr);

            return(GetControlDefaultPropertyValue(ctr, proInfo));
        }