private void BindData() { DataTable dt = new DataTable(); dt.Locale = CultureInfo.InvariantCulture; dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("DisplayName", typeof(string)); dt.Columns.Add("PrimaryName", typeof(string)); dt.Columns.Add("RelatedName", typeof(string)); dt.Columns.Add("FieldTypeImageUrl", typeof(string)); dt.Columns.Add("EditLink", typeof(string)); dt.Columns.Add("IsSystem", typeof(bool)); foreach (MetaField field in mc.GetReferences()) { DataRow row = dt.NewRow(); row["Name"] = field.Name; // DisplayName row["DisplayName"] = CHelper.GetResFileString(field.FriendlyName); // PrimaryName - referenced class.Link or text string refClassName = field.Attributes[McDataTypeAttribute.ReferenceMetaClassName].ToString(); row["PrimaryName"] = CHelper.GetMetaClassAdminPageLink(refClassName, this.Page); // RelatedName - current class row["RelatedName"] = CHelper.GetResFileString(mc.FriendlyName); // FieldTypeImageUrl string postfix = string.Empty; if (field.Attributes.ContainsKey(MetaClassAttribute.IsSystem)) { postfix = "_sys"; } row["FieldTypeImageUrl"] = String.Format(CultureInfo.InvariantCulture, "~/images/IbnFramework/metainfo/reference{0}.gif", postfix); // Edit - we use current class and field as params row["EditLink"] = String.Format(CultureInfo.InvariantCulture, "{0}?class={1}&field={2}&mode=N1", EditFieldLink, mc.Name, field.Name); // IsSystem row["IsSystem"] = field.Attributes.ContainsKey(MetaClassAttribute.IsSystem) || mc.TitleFieldName == field.Name; dt.Rows.Add(row); } DataView dv = dt.DefaultView; if (_pc[sortKey] == null) { _pc[sortKey] = "DisplayName"; } dv.Sort = _pc[sortKey]; MainGrid.DataSource = dv; MainGrid.DataBind(); foreach (GridViewRow row in MainGrid.Rows) { ImageButton ib = (ImageButton)row.FindControl("DeleteButton"); if (ib != null) { ib.Attributes.Add("onclick", "return confirm('" + GetGlobalResourceObject("IbnFramework.GlobalMetaInfo", "Delete").ToString() + "?')"); } } if (!ShowSystemInfo) { MainGrid.Columns[1].Visible = false; } }
private void BindData() { DataTable dt = new DataTable(); dt.Locale = CultureInfo.InvariantCulture; dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("DisplayName", typeof(string)); dt.Columns.Add("CurrentName", typeof(string)); dt.Columns.Add("RelatedName", typeof(string)); dt.Columns.Add("FieldTypeImageUrl", typeof(string)); dt.Columns.Add("EditLink", typeof(string)); dt.Columns.Add("IsSystem", typeof(bool)); foreach (MetaClass bridgeClass in DataContext.Current.MetaModel.GetBridgesReferencedToClass(mc)) { if (!bridgeClass.Attributes.ContainsKey(MetaClassAttribute.BridgeRef1Name) || !bridgeClass.Attributes.ContainsKey(MetaClassAttribute.BridgeRef2Name)) { continue; } string field1Name = bridgeClass.Attributes[MetaClassAttribute.BridgeRef1Name].ToString(); string field2Name = bridgeClass.Attributes[MetaClassAttribute.BridgeRef2Name].ToString(); MetaField bridgeField1; // reference to current class MetaField bridgeField2; // reference to another class if (bridgeClass.Fields[field1Name].Attributes.GetValue <string>(McDataTypeAttribute.ReferenceMetaClassName, string.Empty) == mc.Name) { bridgeField1 = bridgeClass.Fields[field1Name]; bridgeField2 = bridgeClass.Fields[field2Name]; } else { bridgeField1 = bridgeClass.Fields[field2Name]; bridgeField2 = bridgeClass.Fields[field1Name]; } if (bridgeField2 == null) { continue; } string relatedClassName = bridgeField2.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceMetaClassName, string.Empty); if (String.IsNullOrEmpty(relatedClassName)) { continue; } MetaClass relatedClass = MetaDataWrapper.GetMetaClassByName(relatedClassName); DataRow row = dt.NewRow(); row["Name"] = bridgeClass.Name; // DisplayName - get from attribute or use PluralName of related class if (!String.IsNullOrEmpty(bridgeField1.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceDisplayBlock, string.Empty)) && bridgeField1.Attributes.ContainsKey(McDataTypeAttribute.ReferenceDisplayText)) { row["DisplayName"] = CHelper.GetResFileString(bridgeField1.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceDisplayText, string.Empty)); } else { row["DisplayName"] = CHelper.GetResFileString(relatedClass.PluralName); } // CurrentName - current class row["CurrentName"] = CHelper.GetResFileString(mc.FriendlyName); // RelatedName - related class if (relatedClass.Name == mc.Name) // if reletion with the same class { row["RelatedName"] = CHelper.GetResFileString(mc.FriendlyName); } else { row["RelatedName"] = CHelper.GetMetaClassAdminPageLink(relatedClass, this.Page); } // FieldTypeImageUrl string postfix = string.Empty; if (bridgeClass.Attributes.ContainsKey(MetaClassAttribute.IsSystem)) { postfix = "_sys"; } row["FieldTypeImageUrl"] = String.Format(CultureInfo.InvariantCulture, "~/images/IbnFramework/metainfo/bridge{0}.gif", postfix); // Edit - we use current class, bridge class and field as params row["EditLink"] = String.Format("{0}?class={1}&bridge={2}&field={3}", EditFieldLink, mc.Name, bridgeClass.Name, bridgeField1.Name); // IsSystem row["IsSystem"] = bridgeClass.Attributes.ContainsKey(MetaClassAttribute.IsSystem); dt.Rows.Add(row); // we can have two references to current class from one bridge if (bridgeField2.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceMetaClassName, string.Empty) == mc.Name) { row = dt.NewRow(); row["Name"] = bridgeClass.Name; // DisplayName - get from attribute or use PluralName if (!String.IsNullOrEmpty(bridgeField2.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceDisplayBlock, string.Empty)) && bridgeField2.Attributes.ContainsKey(McDataTypeAttribute.ReferenceDisplayText)) { row["DisplayName"] = CHelper.GetResFileString(bridgeField2.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceDisplayText, string.Empty)); } else { row["DisplayName"] = CHelper.GetResFileString(mc.PluralName); } // CurrentName - current class row["CurrentName"] = CHelper.GetResFileString(mc.FriendlyName); // RelatedName - related class row["RelatedName"] = CHelper.GetResFileString(mc.FriendlyName); // FieldTypeImageUrl postfix = string.Empty; if (bridgeClass.Attributes.ContainsKey(MetaClassAttribute.IsSystem)) { postfix = "_sys"; } row["FieldTypeImageUrl"] = String.Format(CultureInfo.InvariantCulture, "~/images/IbnFramework/metainfo/bridge{0}.gif", postfix); // Edit - we use current class, bridge class and field as params row["EditLink"] = String.Format("{0}?class={1}&bridge={2}&field={3}", EditFieldLink, mc.Name, bridgeClass.Name, bridgeField2.Name); // IsSystem row["IsSystem"] = bridgeClass.Attributes.ContainsKey(MetaClassAttribute.IsSystem); dt.Rows.Add(row); } } DataView dv = dt.DefaultView; if (_pc[sortKey] == null) { _pc[sortKey] = "DisplayName"; } dv.Sort = _pc[sortKey]; MainGrid.DataSource = dv; MainGrid.DataBind(); foreach (GridViewRow row in MainGrid.Rows) { ImageButton ib = (ImageButton)row.FindControl("DeleteButton"); if (ib != null) { ib.Attributes.Add("onclick", "return confirm('" + GetGlobalResourceObject("IbnFramework.GlobalMetaInfo", "Delete").ToString() + "?')"); } } if (!ShowSystemInfo) { MainGrid.Columns[1].Visible = false; } }
private void BindData() { DataTable dt = new DataTable(); dt.Locale = CultureInfo.InvariantCulture; dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("DisplayName", typeof(string)); dt.Columns.Add("PrimaryName", typeof(string)); dt.Columns.Add("RelatedName", typeof(string)); dt.Columns.Add("FieldTypeImageUrl", typeof(string)); dt.Columns.Add("EditLink", typeof(string)); dt.Columns.Add("IsSystem", typeof(bool)); foreach (MetaField field in mc.FindReferencesTo(true)) { // don't process references from bridges if (field.Owner.IsBridge) { continue; } DataRow row = dt.NewRow(); row["Name"] = String.Format(CultureInfo.InvariantCulture, "{0},{1}", field.Owner.Name, field.Name); // DisplayName - get from attribute or use PluralName if (!String.IsNullOrEmpty(field.Attributes.GetValue <string>(McDataTypeAttribute.ReferenceDisplayBlock, string.Empty)) && field.Attributes.ContainsKey(McDataTypeAttribute.ReferenceDisplayText)) { row["DisplayName"] = CHelper.GetResFileString(field.Attributes[McDataTypeAttribute.ReferenceDisplayText].ToString()); } else { row["DisplayName"] = CHelper.GetResFileString(field.Owner.PluralName); } // PrimaryName - current class row["PrimaryName"] = CHelper.GetResFileString(mc.FriendlyName); // RelatedName - link row["RelatedName"] = CHelper.GetMetaClassAdminPageLink(field.Owner, this.Page); // FieldTypeImageUrl string postfix = string.Empty; if (field.Attributes.ContainsKey(MetaClassAttribute.IsSystem)) { postfix = "_sys"; } row["FieldTypeImageUrl"] = String.Format(CultureInfo.InvariantCulture, "~/images/IbnFramework/metainfo/backreference{0}.gif", postfix); // Edit - we use related class and related field as params row["EditLink"] = String.Format(CultureInfo.InvariantCulture, "{0}?class={1}&refclass={2}&reffield={3}&mode=1N", EditFieldLink, mc.Name, field.Owner.Name, field.Name); // IsSystem row["IsSystem"] = field.Attributes.ContainsKey(MetaClassAttribute.IsSystem) || field.Owner.TitleFieldName == field.Name; dt.Rows.Add(row); } DataView dv = dt.DefaultView; if (_pc[sortKey] == null) { _pc[sortKey] = "DisplayName"; } dv.Sort = _pc[sortKey]; MainGrid.DataSource = dv; MainGrid.DataBind(); foreach (GridViewRow row in MainGrid.Rows) { ImageButton ib = (ImageButton)row.FindControl("DeleteButton"); if (ib != null) { ib.Attributes.Add("onclick", "return confirm('" + GetGlobalResourceObject("IbnFramework.GlobalMetaInfo", "Delete").ToString() + "?')"); } } }