Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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() + "?')");
                }
            }
        }