Exemplo n.º 1
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.º 2
0
 /// <summary>
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="featureLayer"></param>
 /// <param name="relationship"></param>
 /// <param name="parentCursor"></param>
 private void ExportMapDocumentRelatedObjects(XmlWriter writer, IFeatureLayer featureLayer,
     MapDocumentRelationship relationship, ICursor parentCursor)
 {
     var classs = (IRelationshipClassCollection) featureLayer;
     IEnumRelationshipClass relationshipClasses = classs.RelationshipClasses;
     ExportRelatedObjects(writer, relationship.ObjectClass, relationshipClasses, parentCursor);
 }
Exemplo n.º 3
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.º 4
0
        private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            //在地块图层获得关系类
            IFeatureClass          pFeatClass             = pParcelFeatLayer.FeatureClass;
            IObjectClass           pObjectClass           = pFeatClass as IObjectClass;
            IEnumRelationshipClass pEnumRelationshipClass = pObjectClass.get_RelationshipClasses(esriRelRole.esriRelRoleOrigin);

            pEnumRelationshipClass.Reset();
            IRelationshipClass pRelationshipClass = pEnumRelationshipClass.Next();
            IRow         pOwnerRow;
            IFeature     pParcelFeature;
            AxMapControl axMap = pMainFrm.getMapControl();

            for (int i = 0; i <= pFeatArray.Count - 1; i++)
            {
                pParcelFeature = pFeatArray.get_Element(i) as IFeature;
                ISet pRelatedSet = pRelationshipClass.GetObjectsRelatedToObject(pParcelFeature);
                pRelatedSet.Reset();
                pOwnerRow = pRelatedSet.Next() as IRow;

                if (pOwnerRow != null)
                {
                    if (pOwnerRow.get_Value(pOwnerRow.Fields.FindField("TMK")).ToString() == e.Item.Text)
                    {
                        Utility.FlashFeature(pParcelFeature, axMap.ActiveView.FocusMap);
                        break;
                    }
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 获取与标注对应的关联设备
        /// </summary>
        /// <param name="pAnnoFeature"></param>
        /// <returns></returns>
        public static IFeature GetLinkedFeature(IAnnotationFeature2 pAnnoFeature)
        {
            // 方法一
            IFeature               pFeature      = (IFeature)pAnnoFeature;
            IFeatureClass          pfClass       = (IFeatureClass)pFeature.Class;
            IEnumRelationshipClass pEnumRelation =
                pfClass.get_RelationshipClasses(esriRelRole.esriRelRoleAny);
            IRelationshipClass pRelationship = pEnumRelation.Next();

            if (pRelationship == null)
            {
                return(null);
            }

            ISet pSet = pRelationship.GetObjectsRelatedToObject(pFeature);

            if (pSet == null)
            {
                return(null);
            }

            object o = pSet.Next();

            if (o == null || !(o is IFeature))
            {
                return(null);
            }

            pFeature = (IFeature)o;
            return(pFeature);

            // 方法二

            /*
             * IFeature pFeature = (IFeature)pAnnoFeature;
             * IFeatureClass pfClass = (IFeatureClass)pFeature.Class;
             * IEnumRelationshipClass enumRelCls =
             *          pfClass.get_RelationshipClasses(esriRelRole.esriRelRoleAny);
             * IRelationshipClass pRelationship = enumRelCls.Next();
             * if (pRelationship == null)
             *  return null;
             *
             * // 注记的FeatureClass
             * IFeatureClass pDestionClass = (IFeatureClass)pRelationship.OriginClass;
             * if (pDestionClass == null)
             *  return null;
             *
             * string foreignKey = pRelationship.DestinationPrimaryKey;
             * if (string.IsNullOrEmpty(foreignKey))
             *  return null;
             *
             * pFeature = pDestionClass.GetFeature(pAnnoFeature.LinkedFeatureID);
             * return pFeature;
             */
        }
Exemplo n.º 6
0
        public void Refresh()
        {
            TableList.Clear();
            RelationLookup.Clear();
            IMap        aMap       = ArcMap.Document.FocusMap as IMap;
            IMapLayers2 layers     = ArcMap.Document.FocusMap as IMapLayers2;
            IEnumLayer  someLayers = layers.Layers;
            ILayer      aLayer     = null;

            while ((aLayer = someLayers.Next()) != null)
            {
                IFeatureLayer2 someFeatlayer = aLayer as IFeatureLayer2;
                if (someFeatlayer != null)
                {
                    IFeatureClass featClass = someFeatlayer.FeatureClass as IFeatureClass;
                    if (featClass != null)
                    {
                        IEnumRelationshipClass someRelationships = featClass.RelationshipClasses[esriRelRole.esriRelRoleAny] as IEnumRelationshipClass;
                        if (someRelationships != null)
                        {
                            IRelationshipClass aRelationship = someRelationships.Next();
                            while (aRelationship != null)
                            {
                                Debug.WriteLine(aRelationship.OriginClass.AliasName + " <--> " + aRelationship.DestinationClass.AliasName);
                                IDataset aDataset       = aRelationship.OriginClass as IDataset;
                                IDataset anotherDataset = aRelationship.DestinationClass as IDataset;
                                AddDataset(new IDataset[] { aDataset, anotherDataset });
                                IDataset aDS = featClass as IDataset;
                                if (aDS != null)
                                {
                                    Debug.WriteLine(aDS.Name + "," + aDataset.Name + "," + anotherDataset.Name);
                                    string name = aDS.Name.Equals(aDataset.Name, StringComparison.InvariantCultureIgnoreCase) ? anotherDataset.Name : aDataset.Name;
                                    if (RelationLookup.ContainsKey(name))
                                    {
                                        RelationLookup[name].Add(aRelationship);
                                    }
                                    else
                                    {
                                        RelationLookup.Add(name, new List <IRelationshipClass>()
                                        {
                                            aRelationship
                                        });
                                    }
                                }
                                aRelationship = someRelationships.Next();
                            }
                        }
                    }
                }
            }
            TableList.Sort((a, b) => a.TableName.CompareTo(b.TableName));
        }
Exemplo n.º 7
0
        /// <summary>
        /// 获取与要素设置的releationshipclss对应的标注要素

        /// </summary>
        /// <param name="pFeature">地图要素</param>
        /// <returns>标注要素</returns>
        public static IAnnotationFeature2 GetLinkedFeature(IFeature pFeature)
        {
            // 方法一
            IFeatureClass          pfClass       = (IFeatureClass)pFeature.Class;
            IEnumRelationshipClass pEnumRelation =
                pfClass.get_RelationshipClasses(esriRelRole.esriRelRoleAny);
            IRelationshipClass pRelationship = pEnumRelation.Next();

            if (pRelationship == null)
            {
                return(null);
            }

            ISet pSet = pRelationship.GetObjectsRelatedToObject(pFeature);

            if (pSet == null)
            {
                return(null);
            }

            object o = pSet.Next();

            if (o == null || !(o is IAnnotationFeature2))
            {
                return(null);
            }

            IAnnotationFeature2 pAnnoFeature = (IAnnotationFeature2)o;

            return(pAnnoFeature);

            /*
             * 方法二
             *
             * // 注记的FeatureClass
             * IFeatureClass pDestionClass = (IFeatureClass)pRelationship.DestinationClass;
             * if (pDestionClass == null)
             *  return null;
             *
             * string foreignKey = pRelationship.OriginForeignKey;
             * if (string.IsNullOrEmpty(foreignKey))
             *  return null;
             *
             * string where = foreignKey + "='" + pFeature.OID + "'";
             * IAnnotationFeature2 pAnnoFeature =
             *  (IAnnotationFeature2)GeometryHelper.SearchFeature(pDestionClass, where);
             *
             * return pAnnoFeature;
             */
        }
Exemplo n.º 8
0
        /// <summary>
        ///     Creates an <see cref="IEnumerable{T}" /> from an <see cref="IEnumRelationshipClass" />
        /// </summary>
        /// <param name="source">An <see cref="IEnumRelationshipClass" /> to create an <see cref="IEnumerable{T}" /> from.</param>
        /// <returns>An <see cref="IEnumerable{T}" /> that contains the relationship classes from the input source.</returns>
        public static IEnumerable <IRelationshipClass> AsEnumerable(this IEnumRelationshipClass source)
        {
            if (source != null)
            {
                source.Reset();
                IRelationshipClass relationshipClass = source.Next();
                while (relationshipClass != null)
                {
                    yield return(relationshipClass);

                    relationshipClass = source.Next();
                }
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 获取与pfClass对应的标注的FeatureClass
        /// </summary>
        /// <param name="pfClass">地图要素类,如杆塔</param>
        /// <returns>对应的标注的FeatureClass</returns>
        public static IFeatureClass GetLinkedFeatureClass(IFeatureClass pfClass)
        {
            IEnumRelationshipClass enumRelCls =
                pfClass.get_RelationshipClasses(esriRelRole.esriRelRoleAny);
            IRelationshipClass pRelationship = enumRelCls.Next();

            if (pRelationship == null)
            {
                return(null);
            }

            // 注记的FeatureClass
            IFeatureClass pDestionClass = (IFeatureClass)pRelationship.DestinationClass;

            return(pDestionClass);
        }
Exemplo n.º 10
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.º 11
0
        //上朔追踪列出所有地块
        private void UpstreamCreateOwnerList(IFeatureLayer pParcelFeatLayer, IArray pFeatArray)
        {
            listView1.Columns.Clear();
            listView1.Items.Clear();
            listView1.Columns.Add("物主", 50, HorizontalAlignment.Left);
            listView1.Columns.Add("地址", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("街道", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("城市", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("邮编", 50, HorizontalAlignment.Center);

             
            //在地块图层获得关系类
            IFeatureClass          pFeatClass             = pParcelFeatLayer.FeatureClass;
            IObjectClass           pObjectClass           = pFeatClass as IObjectClass;
            IEnumRelationshipClass pEnumRelationshipClass = pObjectClass.get_RelationshipClasses(esriRelRole.esriRelRoleOrigin);

            pEnumRelationshipClass.Reset();
            IRelationshipClass pRelationshipClass = pEnumRelationshipClass.Next();
            IRow pOwnerRow;

            for (int i = 0; i <= pFeatArray.Count - 1; i++)
            {
                IFeature pParcelFeature = pFeatArray.get_Element(i) as IFeature;
                ISet     pRelatedSet    = pRelationshipClass.GetObjectsRelatedToObject(pParcelFeature);
                pRelatedSet.Reset();
                pOwnerRow = pRelatedSet.Next() as IRow;

                if (pOwnerRow != null)
                {
                    ListViewItem item = new ListViewItem();

                    item.SubItems.Clear();
                    item.SubItems[0].Text = pOwnerRow.get_Value(pOwnerRow.Fields.FindField("TMK")).ToString();

                    item.SubItems.Add(pOwnerRow.get_Value(pOwnerRow.Fields.FindField("ADDR")).ToString());

                    item.SubItems.Add(pOwnerRow.get_Value(pOwnerRow.Fields.FindField("STREET")).ToString());

                    item.SubItems.Add(pOwnerRow.get_Value(pOwnerRow.Fields.FindField("CITY")).ToString());

                    item.SubItems.Add(pOwnerRow.get_Value(pOwnerRow.Fields.FindField("ZIP")).ToString());

                    listView1.Items.Add(item);
                }
            }
        }
Exemplo n.º 12
0
 private void method_1(IEnumRelationshipClass ienumRelationshipClass_0, IObject iobject_0, TreeNode treeNode_0,
                       bool bool_3)
 {
     ienumRelationshipClass_0.Reset();
     for (IRelationshipClass class2 = ienumRelationshipClass_0.Next();
          class2 != null;
          class2 = ienumRelationshipClass_0.Next())
     {
         try
         {
             IObjectClass destinationClass;
             if (bool_3)
             {
                 destinationClass = class2.DestinationClass;
             }
             else
             {
                 destinationClass = class2.OriginClass;
             }
             TreeNode node = new TreeNode(destinationClass.AliasName)
             {
                 Tag = destinationClass
             };
             ISet objectsRelatedToObject = class2.GetObjectsRelatedToObject(iobject_0);
             objectsRelatedToObject.Reset();
             for (IRowBuffer buffer = objectsRelatedToObject.Next() as IRowBuffer;
                  buffer != null;
                  buffer = objectsRelatedToObject.Next() as IRowBuffer)
             {
                 TreeNode node2 = new TreeNode(buffer.get_Value(0).ToString())
                 {
                     Tag = buffer
                 };
                 node.Nodes.Add(node2);
             }
             if (node.Nodes.Count > 0)
             {
                 treeNode_0.Nodes.Add(node);
             }
         }
         catch (Exception exception)
         {
             exception.ToString();
         }
     }
 }
Exemplo n.º 13
0
        /// <summary>
        /// 创建图形要素和标注要素之间的关联关系[使用前确保要素层与标注层,确实存在关联关系]
        /// </summary>
        /// <param name="OriginObject">图形要素</param>
        /// <param name="DestinationObject">标注要素</param>
        /// <returns></returns>
        public static IRelationship CreateRelationship(IFeature OriginObject,
                                                       IAnnotationFeature2 DestinationObject)
        {
            IFeatureClass          pfClass       = (IFeatureClass)OriginObject.Class;
            IEnumRelationshipClass pEnumRelation =
                pfClass.get_RelationshipClasses(esriRelRole.esriRelRoleAny);
            IRelationshipClass pRelationship = pEnumRelation.Next();

            if (pRelationship == null)
            {
                return(null);
            }

            IRelationship pRelation = null;

            pRelation = pRelationship.CreateRelationship((IObject)OriginObject,
                                                         (IObject)DestinationObject);
            return(pRelation);
            //IObject OriginObject, IObject DestinationObject
        }
Exemplo n.º 14
0
        /// <summary>
        ///     Finds all of the relationship classes using the specified <paramref name="source" /> and
        ///     <paramref name="relationshipRole" /> that has been assigned
        ///     any of the <paramref name="modelNames" />.
        /// </summary>
        /// <param name="source">The object class.</param>
        /// <param name="relationshipRole">The relationship role.</param>
        /// <param name="modelNames">The class model names.</param>
        /// <returns>
        ///     Returns a
        ///     <see cref="T:IList{ESRI.ArcGIS.Geodatabase.IRelationshipClass}" />
        ///     representing those relationships that are assigned one or more of the class model names.
        /// </returns>
        /// <exception cref="ArgumentNullException">modelNames</exception>
        public static IEnumerable <IRelationshipClass> GetRelationshipClasses(this IObjectClass source, esriRelRole relationshipRole, params string[] modelNames)
        {
            if (modelNames == null)
            {
                throw new ArgumentNullException("modelNames");
            }

            IEnumRelationshipClass list = source.RelationshipClasses[relationshipRole];

            foreach (IRelationshipClass relClass in list.AsEnumerable())
            {
                switch (relationshipRole)
                {
                case esriRelRole.esriRelRoleAny:
                    if (relClass.DestinationClass.IsAssignedClassModelName(modelNames) ||
                        relClass.OriginClass.IsAssignedClassModelName(modelNames))
                    {
                        yield return(relClass);
                    }

                    break;

                case esriRelRole.esriRelRoleDestination:
                    if (relClass.OriginClass.IsAssignedClassModelName(modelNames))
                    {
                        yield return(relClass);
                    }

                    break;

                default:
                    if (relClass.DestinationClass.IsAssignedClassModelName(modelNames))
                    {
                        yield return(relClass);
                    }

                    break;
                }
            }
        }
Exemplo n.º 15
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.º 16
0
        /// <summary>
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="objectClass"></param>
        /// <param name="relClasses"></param>
        /// <param name="parentCursor"></param>
        private void ExportRelatedObjects(XmlWriter writer, ObjectClass objectClass, IEnumRelationshipClass relClasses,
            ICursor parentCursor)
        {
            IRelationshipClass class2 = relClasses.Next();
            IDataset originClass = null;
            while (class2 != null)
            {
                originClass = (IDataset) class2.OriginClass;
                if (originClass.Name == objectClass.name)
                    break;

                originClass = (IDataset) class2.DestinationClass;
                if (originClass.Name == objectClass.name)
                    break;

                class2 = relClasses.Next();
            }

            if (class2 == null)
                return;

            IDisplayTable displayTableFromDatasetName = GetDisplayTableFromDatasetName(originClass.Name);
            StartExportObjectClass(writer, objectClass, displayTableFromDatasetName);
            for (IRow row = parentCursor.NextRow(); row != null; row = parentCursor.NextRow())
            {
                ISet objectsRelatedToObject = class2.GetObjectsRelatedToObject(row as IObject);
                for (var row2 = objectsRelatedToObject.Next() as IRow;
                    row2 != null;
                    row2 = objectsRelatedToObject.Next() as IRow)
                {
                    ExportRow(writer, objectClass, displayTableFromDatasetName, row2);
                }
            }

            EndExportObjectClass(writer);
        }
Exemplo n.º 17
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);
                        }
                    }
                }
            }
        }
Exemplo n.º 18
0
        private void AddReleationClass(IFeature pFeature, TreeNode pParentNode)
        {
            IRelationshipClass     class3;
            IObjectClass           destinationClass;
            TreeNode               node;
            IEnumRelationship      relationshipsForObject;
            IRelationship          relationship2;
            TreeNode               node2;
            IEnumRelationshipClass class2 = pFeature.Class.get_RelationshipClasses(esriRelRole.esriRelRoleOrigin);

            class2.Reset();
            for (class3 = class2.Next(); class3 != null; class3 = class2.Next())
            {
                destinationClass = class3.DestinationClass;
                if (this.CheckIsEdit(destinationClass as IDataset))
                {
                    node = new TreeNode(destinationClass.AliasName)
                    {
                        Tag = destinationClass
                    };
                    relationshipsForObject = class3.GetRelationshipsForObject(pFeature);
                    relationshipsForObject.Reset();
                    relationship2 = relationshipsForObject.Next();
                    while (relationship2 != null)
                    {
                        if (relationship2.DestinationObject != null)
                        {
                            node2 = new TreeNode(relationship2.DestinationObject.OID.ToString())
                            {
                                Tag = relationship2.DestinationObject
                            };
                            node.Nodes.Add(node2);
                        }
                        relationship2 = relationshipsForObject.Next();
                    }
                    if (node.Nodes.Count > 0)
                    {
                        pParentNode.Nodes.Add(node);
                    }
                }
            }
            class2 = pFeature.Class.get_RelationshipClasses(esriRelRole.esriRelRoleDestination);
            class2.Reset();
            for (class3 = class2.Next(); class3 != null; class3 = class2.Next())
            {
                destinationClass = class3.OriginClass;
                if (this.CheckIsEdit(destinationClass as IDataset))
                {
                    node = new TreeNode(destinationClass.AliasName)
                    {
                        Tag = destinationClass
                    };
                    relationshipsForObject = class3.GetRelationshipsForObject(pFeature);
                    relationshipsForObject.Reset();
                    for (relationship2 = relationshipsForObject.Next();
                         relationship2 != null;
                         relationship2 = relationshipsForObject.Next())
                    {
                        if (relationship2.OriginObject != null)
                        {
                            node2 = new TreeNode(relationship2.OriginObject.OID.ToString())
                            {
                                Tag = relationship2.OriginObject
                            };
                            node.Nodes.Add(node2);
                        }
                    }
                    if (node.Nodes.Count > 0)
                    {
                        pParentNode.Nodes.Add(node);
                    }
                }
            }
        }
Exemplo n.º 19
0
 /// <summary>
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="featureClass"></param>
 /// <param name="relationship"></param>
 /// <param name="parentCursor"></param>
 private void ExportGeodatabaseRelatedObjects(XmlWriter writer, IFeatureClass featureClass,
     GeodatabaseRelationship relationship, ICursor parentCursor)
 {
     IEnumRelationshipClass relClasses = featureClass.get_RelationshipClasses(esriRelRole.esriRelRoleAny);
     ExportRelatedObjects(writer, relationship.ObjectClass, relClasses, parentCursor);
 }
Exemplo n.º 20
0
        private void method_3(IFeature ifeature_2, TreeNode treeNode_0)
        {
            IObjectClass           destinationClass;
            TreeNode               node;
            IEnumRelationship      relationshipsForObject;
            IRelationship          relationship2;
            TreeNode               node2;
            IEnumRelationshipClass class2 = ifeature_2.Class.get_RelationshipClasses(esriRelRole.esriRelRoleOrigin);

            class2.Reset();
            IRelationshipClass class3 = class2.Next();

            while (true)
            {
                if (class3 == null)
                {
                    break;
                }
                try
                {
                    destinationClass = class3.DestinationClass;
                    node             = new TreeNode(destinationClass.AliasName)
                    {
                        Tag = destinationClass
                    };
                    relationshipsForObject = class3.GetRelationshipsForObject(ifeature_2);
                    relationshipsForObject.Reset();
                    relationship2 = relationshipsForObject.Next();
                    while (relationship2 != null)
                    {
                        if (relationship2.DestinationObject != null)
                        {
                            node2 = new TreeNode(relationship2.DestinationObject.OID.ToString())
                            {
                                Tag = relationship2.DestinationObject
                            };
                            node.Nodes.Add(node2);
                        }
                        relationship2 = relationshipsForObject.Next();
                    }
                    if (node.Nodes.Count > 0)
                    {
                        treeNode_0.Nodes.Add(node);
                    }
                }
                catch
                {
                }
                class3 = class2.Next();
            }
            class2 = ifeature_2.Class.get_RelationshipClasses(esriRelRole.esriRelRoleDestination);
            class2.Reset();
            for (class3 = class2.Next(); class3 != null; class3 = class2.Next())
            {
                destinationClass = class3.OriginClass;
                node             = new TreeNode(destinationClass.AliasName)
                {
                    Tag = destinationClass
                };
                relationshipsForObject = class3.GetRelationshipsForObject(ifeature_2);
                relationshipsForObject.Reset();
                for (relationship2 = relationshipsForObject.Next();
                     relationship2 != null;
                     relationship2 = relationshipsForObject.Next())
                {
                    if (relationship2.OriginObject != null)
                    {
                        node2 = new TreeNode(relationship2.OriginObject.OID.ToString())
                        {
                            Tag = relationship2.OriginObject
                        };
                        node.Nodes.Add(node2);
                    }
                }
                if (node.Nodes.Count > 0)
                {
                    treeNode_0.Nodes.Add(node);
                }
            }
        }