This document is archived and information here might be outdated.  Recommended version.


INAClassDefinition.FieldType Property (ArcObjects .NET 10.4 SDK)
ArcObjects Library Reference (NetworkAnalyst)  

INAClassDefinition.FieldType Property

The field type for a network analyst class field.

[Visual Basic .NET]
Public Function get_FieldType ( _
    ByVal FieldName As String _
) As Integer
[C#]
public int get_FieldType (
    string FieldName
);
[C++]
HRESULT get_FieldType(
  BSTR FieldName,
  long* naFieldType
);
[C++]

Parameters FieldName [in] FieldName is a parameter of type BSTR naFieldType [out, retval] naFieldType is a parameter of type long

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Network Analyst Extension.

Remarks

FieldType specifies how the field is to be used by returning a combination of bits defined in esriNAFieldType.

The valid values for this property are 0 - 63.  Each bit represents one of the enumeration settings in esriNAFieldType.

 

Thus, if a field is used for input to the solver, but is not editable (e.g. the Status field) the FieldType would be esriNAFieldTypeInput + esriNAFieldTypeNotEditable which would equal 9.

[C#]

This C# example shows how you can programatically retrieve the FieldType and perform bitwise calculations to determine the type.

public void ShowFieldType(INAClass naClass)
{
    // Get the class definition 
    INAClassDefinition naClassDefinition=naClass.ClassDefinition;

    // Loop though the FieldType for each Field
    string fieldName;
    int fieldType;
    for (int i=0; i < naClassDefinition.Fields.FieldCount; i++)
    {
        fieldName=naClassDefinition.Fields.get_Field(i).Name;
        fieldType=naClassDefinition.get_FieldType(fieldName);
        // Output the fieldName, the fieldType value, and the string of what the fieldType means.
        Console.WriteLine("{0} - {1} - {2}", fieldName, fieldType, ConvertFieldTypeToString(fieldType));
    }
}
private string ConvertFieldTypeToString(int fieldTypeInt)
{
    string fieldTypes=string.Empty;
    esriNAFieldType fieldType=(esriNAFieldType)fieldTypeInt;
    if ((fieldType & esriNAFieldType.esriNAFieldTypeInput) == esriNAFieldType.esriNAFieldTypeInput)
        fieldTypes += ",esriNAFieldTypeInput"; // It is an Input Field
    if ((fieldType & esriNAFieldType.esriNAFieldTypeOutput) == esriNAFieldType.esriNAFieldTypeOutput)
        fieldTypes += ",esriNAFieldTypeOutput"; // It is an Output Field
    if ((fieldType & esriNAFieldType.esriNAFieldTypeNotVisible) == esriNAFieldType.esriNAFieldTypeNotVisible)
        fieldTypes += ",esriNAFieldTypeNotVisible"; // The field is Not Visible (and not shown in the NAWindow)
    if ((fieldType & esriNAFieldType.esriNAFieldTypeNotEditable) == esriNAFieldType.esriNAFieldTypeNotEditable)
        fieldTypes += ",esriNAFieldTypeNotEditable"; // The field is Not Editable (and can not be edited using the Network Location Properties Window)
    if ((fieldType & esriNAFieldType.esriNAFieldTypeSequence) == esriNAFieldType.esriNAFieldTypeSequence)
        fieldTypes += ",esriNAFieldTypeSequence"; // The field type is Sequence
    if ((fieldType & esriNAFieldType.esriNAFieldTypeGroup) == esriNAFieldType.esriNAFieldTypeGroup)
        fieldTypes += ",esriNAFieldTypeGroup"; // The field type is Group
    if (fieldTypes != string.Empty)
        fieldTypes=fieldTypes.Substring(1);
    return fieldTypes;
}
[Visual Basic .NET]

This VB.NET example shows how you can programatically retrieve the FieldType and perform bitwise calculations to determine the type.

Public  Sub ShowFieldType(ByVal naClass As INAClass)
    ' Get the class definition  
    Dim naClassDefinition As INAClassDefinition= naClass.ClassDefinition 
 
    ' Loop though the FieldType for each Field
    Dim fieldName As String
    Dim fieldType As Integer
    Dim i As Integer
    For  i=0 To  naClassDefinition.Fields.FieldCount- 1  Step  i + 1
        fieldName=naClassDefinition.Fields.Field(i).Name
        fieldType=naClassDefinition.FieldType(fieldName)
 
        ' Output the fieldName, the fieldType value, and the string of what the fieldType means.
        Console.WriteLine("{0} - {1} - {2}", fieldName, fieldType, ConvertFieldTypeToString(fieldType))
    Next
End Sub
 
Private Function ConvertFieldTypeToString(ByVal fieldTypeInt As Integer) As String
    Dim fieldTypes As String= String.Empty 
 
    Dim fieldType As esriNAFieldType=CType(fieldTypeInt, esriNAFieldType)
    If (fieldType & esriNAFieldType.esriNAFieldTypeInput)=esriNAFieldType.esriNAFieldTypeInput Then
        fieldTypes += ",esriNAFieldTypeInput" ' It is an Input Field
    End If
 
    If (fieldType & esriNAFieldType.esriNAFieldTypeOutput)=esriNAFieldType.esriNAFieldTypeOutput Then
        fieldTypes += ",esriNAFieldTypeOutput" ' It is an Output Field
    End If
 
    If (fieldType & esriNAFieldType.esriNAFieldTypeNotVisible)=esriNAFieldType.esriNAFieldTypeNotVisible Then
        fieldTypes += ",esriNAFieldTypeNotVisible" ' The field is Not Visible (and not shown in the NAWindow)
    End If
 
    If (fieldType & esriNAFieldType.esriNAFieldTypeNotEditable)=esriNAFieldType.esriNAFieldTypeNotEditable Then
        fieldTypes += ",esriNAFieldTypeNotEditable" ' The field is Not Editable (and can not be edited using the Network Location Properties Window)
    End If
    
    If (fieldType & esriNAFieldType.esriNAFieldTypeSequence)=esriNAFieldType.esriNAFieldTypeSequence Then
        fieldTypes += ",esriNAFieldTypeSequence" ' The field type is Sequence
    End If

    If (fieldType & esriNAFieldType.esriNAFieldTypeGroup)=esriNAFieldType.esriNAFieldTypeGroup Then
        fieldTypes += ",esriNAFieldTypeGroup" ' The field type is Group
    End If

    If fieldTypes <> String.Empty Then
        fieldTypes=fieldTypes.Substring(1)
    End If
 
    Return fieldTypes
End Function

See Also

INAClassDefinition Interface

.NET Samples

ArcGIS Network Analyst extension Engine application (Code Files: frmMain)