Select to view content in your preferred language

Field names and field count

3150
1
11-22-2014 09:04 PM
ababreddy
New Contributor

Hii, i am trying to display Field names and field count. here is my code but i am not getting result. Please help me

 

 

            IMxDocument pmx = m_application.Document as IMxDocument;

            IMap pmap = pmx.FocusMap;

 

            ILayer layer = pmap.get_Layer(0);

 

            IFeatureLayer pflayer = (IFeatureLayer)layer;

 

            IFeatureClass fc = pflayer.FeatureClass;

 

            IFields fields = fc.Fields;

         

            int fieldCount = fields.FieldCount;

 

         

            int endFieldIndex = fieldCount - 1;

            int fieldIndex = 0;

            while (fieldIndex <= endFieldIndex)

            {

                IField field = fields.get_Field(fieldIndex);

                Console.WriteLine("The field at field index {0} is named (1)", fieldIndex, field.Name);

                //MessageBox.Show("The field at field index {0} is named (1)", fieldIndex.ToString(), field.Name);

                fieldIndex++;

Tags (2)
0 Kudos
1 Reply
FreddieGibson
Regular Contributor II

Your logic looks correct to me. If you step through your code could you verify that fc.Fields is returning values?

I wrote up a quick console application to test this and everything works fine for me. I've pasted my logic below if you want to give it a shot.

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.esriSystem;
using System;
using System.Windows.Forms;


namespace ListFields
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
            IAoInitialize aoInit = new AoInitializeClass();
            aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);


            var mxdPath = BrowseFolderForFile("Please select a *.mxd file", "Map Document (*.mxd)|*.mxd");


            if (string.IsNullOrEmpty(mxdPath))
                throw new ArgumentException("Invalid MXD Path");


            var mxd = new MapDocumentClass();
            mxd.Open(mxdPath, string.Empty);


            var uid = new UIDClass { Value = "{40A9E885-5533-11D0-98BE-00805F7CED21}" };


            for (int i = 0; i < mxd.MapCount; i++)
            {
                var map = mxd.Map;
                var enumLayer = map.Layers[uid, true];
                enumLayer.Reset();


                ILayer layer;
                while ((layer = enumLayer.Next()) != null)
                {
                    var featClass = (layer as IFeatureLayer).FeatureClass;


                    Console.WriteLine("Layer {0} has {1} fields.", layer.Name, featClass.Fields.FieldCount);
                                        
                    for (int j = 0; j < featClass.Fields.FieldCount; j++)
                        Console.WriteLine("...{0:00}. {1}", j, featClass.Fields.Field.Name);
                }   
            }


            Console.Write("\nPress enter to exit...");
            Console.ReadLine();
        }


        static string BrowseFolderForFile(string title, string extension)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog
            {
                Filter = extension,
                Multiselect = false,
                ShowHelp = true,
                Title = title
            };
            
            return openFileDialog.ShowDialog() == DialogResult.OK ? openFileDialog.FileName : null;
        }
    }
}