private string GetMetaPropertyValue(EntityObjectProperty eop, string fieldName) { MetaField field = Mediachase.Ibn.Web.UI.Controls.Util.FormController.GetMetaField(ClassName, fieldName); string value = String.Empty; if (field == null) { return(value); } if (field.IsMultivalueEnum) { MetaFieldType type = field.GetMetaType(); int[] idList = (int[])eop.Value; foreach (int id in idList) { if (value != String.Empty) { value += "<br />"; } value += CHelper.GetResFileString(MetaEnum.GetFriendlyName(type, id)); } } else if (field.IsEnum) { value = CHelper.GetResFileString(MetaEnum.GetFriendlyName(field.GetMetaType(), (int)eop.Value)); } //else if (field.IsReference) //{ // string sReferencedClass = field.Attributes.GetValue<string>(McDataTypeAttribute.ReferenceMetaClassName); // EntityObject obj = BusinessManager.Load(sReferencedClass, (PrimaryKeyId)eop.Value); // MetaClass mcRef = Mediachase.Ibn.Core.MetaDataWrapper.GetMetaClassByName(sReferencedClass); // value = obj.Properties[mcRef.TitleFieldName].Value.ToString(); //} //dvs: hot-fix (IBNPORTAL_ERROR-008286-27094) else if (field.Name == "CreatorId" || field.Name == "ModifierId") { value = CommonHelper.GetUserStatusPureName((int)eop.Value); } else { value = eop.Value.ToString(); } return(value); }
/// <summary> /// Преобразует значение свойства мета объекта к одному из стандартных типов в соответвии /// с определенными правилами /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <returns></returns> public static object ConvertMcData2ManagedData(MetaField field, object value) { if ((value == null) || (value == DBNull.Value)) { return(null); } object retVal = null; if (field.IsMultivalueEnum) { int[] enumValues = value as int[]; if (enumValues != null) { retVal = String.Join(",", Array.ConvertAll <int, string>(enumValues, delegate(int intId) { return(Mediachase.IBN.Business.Common.GetWebResourceString(MetaEnum.GetFriendlyName(field.GetMetaType(), intId), CultureInfo.CurrentUICulture)); })); } } else if (field.IsEnum) { retVal = Mediachase.IBN.Business.Common.GetWebResourceString(MetaEnum.GetFriendlyName(field.GetMetaType(), (int)value), CultureInfo.CurrentUICulture); } else if (field.GetMetaType().McDataType == McDataType.File) { FileInfo fileInfo = value as FileInfo; if (fileInfo != null) { retVal = fileInfo.Handle; } } else if (field.IsReference) { PrimaryKeyId?primaryKey = value as PrimaryKeyId?; if (primaryKey != null) { retVal = primaryKey.ToString(); } } else { retVal = ConvertType2McDataType(field.GetMetaType().McDataType, value); } return(retVal); }
public static object ParseSimpleMetaFieldValue(MetaField metaField, string value) { if (string.IsNullOrEmpty(value)) { return(null); } var metaType = metaField.GetMetaType(); return(IsElementaryType(metaType.McDataType) ? PropertyValueUtil.ConvertToObject(metaField, value) : null); }
private void BindGroups() { MetaClass mc = Mediachase.Ibn.Core.MetaDataWrapper.GetMetaClassByName("WorkflowDefinition"); MetaField mf = mc.Fields[WorkflowDefinitionEntity.FieldTemplateGroup]; TeplateGroupList.DataTextField = "Name"; TeplateGroupList.DataValueField = "Handle"; TeplateGroupList.DataSource = MetaEnum.GetItems(mf.GetMetaType()); TeplateGroupList.DataBind(); BindTemplates(); }
/// <summary> /// Gets the name of the meta type. /// </summary> /// <param name="field">The field.</param> /// <returns></returns> public static string GetMetaTypeName(MetaField field) { string typeName = ""; if (field.IsMultivalueEnum) { typeName = "EnumMultiValue"; } else if (field.IsEnum) { typeName = "Enum"; } else if (field.GetMetaType().McDataType == McDataType.MultiReference) { typeName = "MultiReference"; } else { typeName = field.GetMetaType().Name; } return(typeName); }
public static string GetMetaFieldSerializationValue(MetaField metaField, object value) { if (value == null) { return(null); } var metaType = metaField.GetMetaType(); if (metaType.McDataType != McDataType.Enum) { return(PropertyValueUtil.ConvertToString(metaField, value)); } if (value is MetaEnumItem enumSingleValue) { return(enumSingleValue.Name); } return(!(value is MetaEnumItem[] enumMultiValue) ? null : string.Join("|", enumMultiValue.Select(item => item.Name))); }
public static string GetMetaTypeName(MetaField field) { string typeName = ""; if (field.IsMultivalueEnum) typeName = "EnumMultiValue"; else if (field.IsEnum) typeName = "Enum"; else if (field.GetMetaType().McDataType == McDataType.MultiReference) typeName = "MultiReference"; else if (field.IsReferencedField) // O.R. [2010-02-24] Fix: Referenced field is Enum { string refFieldName = field.Attributes[McDataTypeAttribute.ReferencedFieldMetaFieldName].ToString(); if (field.ReferenceToMetaClass != null && field.ReferenceToMetaClass.Fields[refFieldName] != null) { MetaField referencedField = field.ReferenceToMetaClass.Fields[refFieldName]; if (referencedField.IsMultivalueEnum) typeName = "EnumMultiValue"; else if (referencedField.IsEnum) typeName = "Enum"; else typeName = field.GetMetaType().Name; } } else typeName = field.GetMetaType().Name; return typeName; }
public static object GetMetaFieldValue(MetaField mf, IEnumerable <string> dataCollection) { var data = string.Join("|", dataCollection); if (string.IsNullOrEmpty(data)) { return(null); } object value = null; try { MetaEnumItem item = null; var metaType = mf.GetMetaType(); switch (metaType.McDataType) { case McDataType.Enum: var dicFieldValues = new List <MetaEnumItem>(); var items = data.Split('|'); var metaItems = MetaEnum.GetItems(metaType); foreach (var val in items) { item = metaItems.FirstOrDefault(i => string.Equals(i.Name, val, StringComparison.OrdinalIgnoreCase)); if (item != null) { dicFieldValues.Add(item); } else { if (string.IsNullOrEmpty(val)) { continue; } var newId = MetaEnum.AddItem(metaType, val, 0); if (newId <= 0 || newId > metaItems.Length - 1) { continue; } item = MetaEnum.GetItems(metaType).FirstOrDefault(x => x.Handle == newId); if (item != null) { dicFieldValues.Add(item); } } } if (dicFieldValues.Count > 0) { value = dicFieldValues.ToArray(); } break; default: value = ParseSimpleMetaFieldValue(mf, data); break; } } catch (Exception ex) { throw ex; } return(value); }
/// <summary> /// Gets the name of the meta type. /// </summary> /// <param name="field">The field.</param> /// <returns></returns> private static string GetMetaTypeName(MetaField field) { string typeName = ""; if (field.IsMultivalueEnum) typeName = "EnumMultiValue"; else if (field.IsEnum) typeName = "Enum"; else if (field.GetMetaType().McDataType == McDataType.MultiReference) typeName = "MultiReference"; else typeName = field.GetMetaType().Name; return typeName; }
private void BindGroupDataList() { //заполняем левый даталист для группировок if (!String.IsNullOrEmpty(lvp.GroupByFieldName)) { string groupField = lvp.GroupByFieldName; if (mc != null && mc.Fields.Contains(groupField)) { MetaField mf = mc.Fields[groupField]; if (mf.IsEnum) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Id", typeof(int))); dt.Columns.Add(new DataColumn("Name", typeof(string))); foreach (MetaEnumItem item in MetaEnum.GetItems(mf.GetMetaType())) { DataRow row = dt.NewRow(); row["Id"] = item.Handle; row["Name"] = CHelper.GetResFileString(item.Name); dt.Rows.Add(row); } DataView dv = dt.DefaultView; dv.Sort = "Name"; groupList.DataSource = dv; groupList.DataKeyField = "Id"; groupList.DataBind(); //пытаемся найти и выделить последнюю запомненную группу int selectedIndex = 0; if (_pc[ViewName + "_" + groupField + "_" + GroupItemKey] != null) { foreach (DataListItem dli in groupList.Items) { LinkButton lb = (LinkButton)dli.FindControl("lbGroupItem"); if (lb != null && lb.CommandArgument == _pc[ViewName + "_" + groupField + "_" + GroupItemKey]) { selectedIndex = dli.ItemIndex; break; } } } if (groupList.Items.Count > 0) { groupList.SelectedIndex = selectedIndex; } //сохраняем выделенное значением _pc if (groupList.SelectedValue != null) { _pc[ViewName + "_" + groupField + "_" + GroupItemKey] = groupList.SelectedValue.ToString(); } else { _pc[ViewName + "_" + groupField + "_" + GroupItemKey] = "0"; } } } } }
/// <summary> /// Value2s the type of the meta property. /// </summary> /// <param name="value">The value.</param> /// <param name="mf">The mf.</param> /// <returns></returns> private object Value2MetaPropertyType(object value, MetaField mf) { return Type2McDataType.ConvertType2McDataType(mf.GetMetaType().McDataType, value); }
/// <summary> /// Binds the data. /// </summary> /// <param name="field">The field.</param> public void BindData(MetaField field) { string url = CHelper.GetAbsolutePath(String.Format("/Apps/MetaDataBase/MetaUI/Pages/Public/SelectMultiReference.aspx?type={0}&btn={1}", field.GetMetaType().Name, Page.ClientScript.GetPostBackEventReference(btnRefresh, "xxx"))); ibSelect.OnClientClick = String.Format("OpenWindow(\"{0}\", 640, 480, 1); return false;", url); }
/// <summary> /// Преобразует значение свойства мета объекта к одному из стандартных типов в соответвии /// с определенными правилами /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <returns></returns> public static object ConvertMcData2ManagedData(MetaField field, object value) { if ((value == null) || (value == DBNull.Value)) return null; object retVal = null; if (field.IsMultivalueEnum) { int[] enumValues = value as int[]; if (enumValues != null) { retVal = String.Join(",", Array.ConvertAll<int, string>(enumValues, delegate(int intId) { return Mediachase.IBN.Business.Common.GetWebResourceString(MetaEnum.GetFriendlyName(field.GetMetaType(), intId), CultureInfo.CurrentUICulture); })); } } else if (field.IsEnum) retVal = Mediachase.IBN.Business.Common.GetWebResourceString(MetaEnum.GetFriendlyName(field.GetMetaType(), (int)value), CultureInfo.CurrentUICulture); else if (field.GetMetaType().McDataType == McDataType.File) { FileInfo fileInfo = value as FileInfo; if (fileInfo != null) retVal = fileInfo.Handle; } else if (field.IsReference) { PrimaryKeyId? primaryKey = value as PrimaryKeyId?; if (primaryKey != null) retVal = primaryKey.ToString(); } else retVal = ConvertType2McDataType(field.GetMetaType().McDataType, value); return retVal; }
//Export #region ExportXML private void ExportXML() { EntityObject[] list = GetEntityObjectListForExport(); DataTable dt = new DataTable(); dgExport.Columns.Clear(); ListViewProfile lvp = ListViewProfile.Load(ClassName, _profileName, _placeName); foreach (string fieldName in lvp.FieldSet) { MetaField field = Mediachase.Ibn.Web.UI.Controls.Util.FormController.GetMetaField(ClassName, fieldName); if (field == null) { continue; } if (field.IsReference) { dt.Columns.Add(new DataColumn(fieldName, typeof(string))); if (fieldName.ToLower().EndsWith("id")) { string refField = fieldName.Substring(0, fieldName.Length - 2); dt.Columns.Add(new DataColumn(refField, typeof(string))); } } else { //et 17.02.2009 - сохранение информации о типе Type managedType = Mediachase.Ibn.Lists.Mapping.Type2McDataType.McDataType2ManagedType(field.GetMetaType().McDataType); if (managedType != null) { DataColumn column = new DataColumn(fieldName, managedType); if (field.IsEnum) { column.MaxLength = 1024; } else { column.MaxLength = field.Attributes.GetValue <int>(McDataTypeAttribute.StringMaxLength, -1); column.Unique = field.Attributes.GetValue <bool>(McDataTypeAttribute.StringIsUnique, false); } //добавляем сотoлбец в datatable dt.Columns.Add(column); } } } MakeDataViewFromListForXML(dt, list, null); Mediachase.UI.Web.Util.CommonHelper.SaveXML(dt, String.Format("{0}s.xml", ClassName)); }
public void BindData(MetaField field) { string url = CHelper.GetAbsolutePath(String.Format("/Apps/MetaUI/Pages/Public/SelectMultiReference.aspx?type={0}&btn={1}", field.GetMetaType().Name, Page.ClientScript.GetPostBackEventReference(btnRefresh, "xxx"))); ibSelect.OnClientClick = String.Format("OpenPopUpWindow(\"{0}\", 640, 480, 1); return false;", url); }
/// <summary> /// Value2s the type of the meta property. /// </summary> /// <param name="value">The value.</param> /// <param name="mf">The mf.</param> /// <returns></returns> private object Value2MetaPropertyType(object value, MetaField mf) { return(Type2McDataType.ConvertType2McDataType(mf.GetMetaType().McDataType, value)); }
/// <summary> /// Handles the ItemDataBound event of the dgMapping control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Web.UI.WebControls.DataGridItemEventArgs"/> instance containing the event data.</param> void dgMapping_ItemDataBound(object sender, DataGridItemEventArgs e) { DropDownList ddi = (DropDownList)e.Item.FindControl("ddColumns"); if (ddi != null) { string mfName = e.Item.Cells[0].Text; #region Commented may be needed //string ownFieldName = mfName; //string aggrFieldName = String.Empty; //string aggrClassName = String.Empty; //MetaClass ownClass = MetaDataWrapper.GetMetaClassByName(_className); //MetaClass aggrClass = null; //MetaField ownField = null; //MetaField aggrField = null; //if (ownFieldName.Contains(".")) //{ // string[] mas = ownFieldName.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries); // ownFieldName = mas[0]; // aggrFieldName = mas[1]; // ownField = MetaDataWrapper.GetMetaFieldByName(ownClass, ownFieldName); // aggrClassName = ownField.Attributes.GetValue<string>(McDataTypeAttribute.AggregationMetaClassName); // aggrField = MetaDataWrapper.GetMetaFieldByName(aggrClassName, aggrFieldName); //} //else // ownField = MetaDataWrapper.GetMetaFieldByName(ownClass, ownFieldName); #endregion _ir = (ImportRequest)ViewState["_ir"]; MetaField field = FormController.GetMetaField(_className, mfName); MappingElementBuilder meb = new MappingElementBuilder(_ir.MappingDocument); MappingRule mr = meb.GetRuleByMetaField(mfName); ddi.Items.Clear(); ddi.Items.Add(new ListItem(GetGlobalResourceObject("IbnFramework.Common", "tNotSetValue").ToString(), "-1")); if (field.GetOriginalMetaType() != null) { ddi.Items.Add(new ListItem(GetGlobalResourceObject("IbnFramework.Common", "tDefaultValue").ToString(), "0")); } foreach (DataColumn dc in _ir.Data.Tables[0].Columns) { ddi.Items.Add(new ListItem(dc.ColumnName, dc.ColumnName)); } string val = "-1"; if (mr != null) { if (mr.RuleType == MappingRuleType.DefaultValue) { val = "0"; } else if (mr.RuleType == MappingRuleType.CopyValue) { val = mr.ColumnName; } } CHelper.SafeSelect(ddi, val); TextBox txt = (TextBox)e.Item.FindControl("tbColumn"); DropDownList dd = (DropDownList)e.Item.FindControl("ddColumn"); switch (val) { case "-1": //Not Set txt.Visible = false; dd.Visible = false; break; case "0": //Default Value if (field.IsEnum) { dd.Visible = true; txt.Visible = false; dd.Items.Clear(); MetaFieldType mft = field.GetMetaType(); foreach (MetaEnumItem mei in mft.EnumItems) { dd.Items.Add(new ListItem(CHelper.GetResFileString(mei.Name), mei.Handle.ToString())); } if (!String.IsNullOrEmpty(mr.DefaultValue)) { CHelper.SafeSelect(dd, mr.DefaultValue); } } else if (field.IsReference) { dd.Visible = true; txt.Visible = false; dd.Items.Clear(); string refClassName = field.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceMetaClassName); MetaClass refClass = MetaDataWrapper.GetMetaClassByName(refClassName); EntityObject[] list = BusinessManager.List(refClassName, (new FilterElementCollection()).ToArray()); dd.Items.Add(new ListItem(GetGlobalResourceObject("IbnFramework.Common", "tNotSetValue").ToString(), "-1")); foreach (EntityObject eo in list) { dd.Items.Add(new ListItem(CHelper.GetResFileString(eo[refClass.TitleFieldName].ToString()), eo.PrimaryKeyId.Value.ToString())); } if (!String.IsNullOrEmpty(mr.DefaultValue)) { CHelper.SafeSelect(dd, mr.DefaultValue); } } else { dd.Visible = false; txt.Visible = true; txt.Text = mr.DefaultValue; } break; default: //CopyValue txt.Visible = false; dd.Visible = false; break; } //Update UpdatePanel with lbl & txt && dd (upValues) foreach (Control c in e.Item.Cells[3].Controls) { if (c is UpdatePanel) { ((UpdatePanel)c).Update(); } } } }