//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)); }