Exemplo n.º 1
0
 public static bool TableIsRelateLayer(ITable itable_0, ITable itable_1)
 {
     try
     {
         IRelationshipClassCollection classs = itable_0 as IRelationshipClassCollection;
         if (classs != null)
         {
             IEnumRelationshipClass class2 = classs.FindRelationshipClasses(itable_1 as IObjectClass,
                                                                            esriRelRole.esriRelRoleAny);
             class2.Reset();
             if (class2.Next() != null)
             {
                 return(true);
             }
         }
         return(false);
     }
     catch (COMException exception)
     {
         MessageBox.Show(exception.Message, "COM Error: " + exception.ErrorCode.ToString(), MessageBoxButtons.OK,
                         MessageBoxIcon.Exclamation);
     }
     catch (Exception exception2)
     {
         MessageBox.Show(exception2.Message, ".NET Error: ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     }
     return(false);
 }
Exemplo n.º 2
0
        private void processRelates(IFeatureLayer flyr)
        {
            string res          = "";
            string destName     = "";
            string destServer   = "";
            string destInstance = "";
            string destUser     = "";
            IRelationshipClassCollection relClassColl = (IRelationshipClassCollection)flyr;
            IEnumRelationshipClass       enumRelClass = relClassColl.RelationshipClasses;

            enumRelClass.Reset();
            IRelationshipClass relClass = enumRelClass.Next();

            while (relClass != null)
            {
                IDataset dset      = (IDataset)relClass;
                ITable   destTable = (ITable)relClass.DestinationClass;
                IDataset dsetDest  = (IDataset)destTable;
                destName     = dsetDest.Name;
                destServer   = dsetDest.Workspace.ConnectionProperties.GetProperty("server").ToString();
                destInstance = dsetDest.Workspace.ConnectionProperties.GetProperty("instance").ToString();
                destUser     = dsetDest.Workspace.ConnectionProperties.GetProperty("user").ToString();
                res          = res + "(" + destName + "/" + destServer + "/" + destInstance + "/" + destUser + "/" + relClass.OriginPrimaryKey + "/" + relClass.OriginForeignKey + "/" + dset.BrowseName + ")";
                relClass     = enumRelClass.Next();
            }

            relateinfo = res;
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Removes the relate to the specified foreign class.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="foreignClass">The foreign class.</param>
        /// <param name="role">The role.</param>
        public static void Remove(this IFeatureLayer source, IObjectClass foreignClass, esriRelRole role)
        {
            IRelationshipClassCollectionEdit edit       = (IRelationshipClassCollectionEdit)source;
            IRelationshipClassCollection     collection = (IRelationshipClassCollection)edit;

            foreach (var relClass in collection.FindRelationshipClasses(foreignClass, role).AsEnumerable())
            {
                edit.RemoveRelationshipClass(relClass);
            }
        }
Exemplo n.º 4
0
        private void btnRemoveRelating_Click(object sender, EventArgs e)
        {
            try
            {
                IRelationshipClassCollection classs = this.itable_0 as IRelationshipClassCollection;
                IEnumRelationshipClass       relationshipClasses = classs.RelationshipClasses;
                relationshipClasses.Reset();
                string             str = this.RelatingDataList.SelectedItem.ToString();
                IRelationshipClass relationshipClass = relationshipClasses.Next();
                while (relationshipClass != null)
                {
                    if (str == (relationshipClass as IDataset).Name)
                    {
                        goto Label_0075;
                    }
                    relationshipClass = relationshipClasses.Next();
                }
                if (this.OnJoinAndRelationChange != null)
                {
                    this.OnJoinAndRelationChange();
                }
                return;

Label_0075:
                (classs as IRelationshipClassCollectionEdit).RemoveRelationshipClass(relationshipClass);
                this.RelatingDataList.Items.Clear();
                this.method_2(this.itable_0);
                if (this.RelatingDataList.Items.Count > 0)
                {
                    this.btnRemoveAllRelating.Enabled = true;
                }
                else
                {
                    this.btnRemoveAllRelating.Enabled = false;
                }
            }
            catch (COMException exception)
            {
                MessageBox.Show(exception.Message, "COM Error: " + exception.ErrorCode.ToString(), MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation);
            }
            catch (Exception exception2)
            {
                MessageBox.Show(exception2.Message, ".NET Error: ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
Exemplo n.º 5
0
 private void method_2(ITable itable_1)
 {
     try
     {
         IRelationshipClassCollection classs = itable_1 as IRelationshipClassCollection;
         IEnumRelationshipClass       relationshipClasses = classs.RelationshipClasses;
         relationshipClasses.Reset();
         for (IRelationshipClass class3 = relationshipClasses.Next();
              class3 != null;
              class3 = relationshipClasses.Next())
         {
             this.RelatingDataList.Items.Add(new ObjectWrap(class3));
         }
     }
     catch (COMException exception)
     {
         MessageBox.Show(exception.Message, "COM Error: " + exception.ErrorCode.ToString(), MessageBoxButtons.OK,
                         MessageBoxIcon.Exclamation);
     }
     catch (Exception exception2)
     {
         MessageBox.Show(exception2.Message, ".NET Error: ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     }
 }
Exemplo n.º 6
0
        private void method_6(IFeatureLayer ifeatureLayer_0, IObject iobject_0)
        {
            string             str;
            int                num;
            IField             field;
            IFieldInfo         info;
            string             str2;
            List <IAttachment> list = this.method_4(iobject_0);

            if (list.Count > 0)
            {
                this.textBox1.Text   = "共有附件" + list.Count;
                this.button1.Tag     = list;
                this.panel5.AutoSize = false;
            }
            else
            {
                this.panel5.AutoSize = true;
            }
            this.Infolist.Items.Clear();
            IRelationshipClassCollection classs = ifeatureLayer_0 as IRelationshipClassCollection;
            IEnumRelationshipClass       relationshipClasses = classs.RelationshipClasses;

            relationshipClasses.Reset();
            relationshipClasses.Next();
            ITable displayTable = (ifeatureLayer_0 as IDisplayTable).DisplayTable;

            if (displayTable == null)
            {
                str = "几何数据";
                for (num = 0; num < (ifeatureLayer_0 as ILayerFields).FieldCount; num++)
                {
                    field = (ifeatureLayer_0 as ILayerFields).get_Field(num);
                    info  = (ifeatureLayer_0 as ILayerFields).get_FieldInfo(num);
                    if (info.Visible)
                    {
                        this.Infolist.Items.Add(info.Alias);
                        if (field.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(str);
                        }
                        else if (field.Type == esriFieldType.esriFieldTypeBlob)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add("二进制数据");
                        }
                        else if (field.Type == esriFieldType.esriFieldTypeOID)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(
                                iobject_0.get_Value(num).ToString());
                        }
                        else
                        {
                            str2 = this.method_7(iobject_0, field, num);
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(str2);
                        }
                    }
                }
            }
            else
            {
                IRow row = displayTable.GetRow(iobject_0.OID);
                str = "几何数据";
                for (num = 0; num < (ifeatureLayer_0 as ILayerFields).FieldCount; num++)
                {
                    field = (ifeatureLayer_0 as ILayerFields).get_Field(num);
                    info  = (ifeatureLayer_0 as ILayerFields).get_FieldInfo(num);
                    if (info.Visible)
                    {
                        this.Infolist.Items.Add(info.Alias);
                        if (field.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(str);
                        }
                        else if (field.Type == esriFieldType.esriFieldTypeBlob)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add("二进制数据");
                        }
                        else if (field.Type == esriFieldType.esriFieldTypeOID)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(
                                row.get_Value(num).ToString());
                        }
                        else
                        {
                            str2 = this.method_7(row, field, num);
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(str2);
                        }
                    }
                }
            }
        }