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
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.
- esriNAFieldTypeUndefined = 0
- esriNAFieldTypeInput = 1
- esriNAFieldTypeOutput = 2
- esriNAFieldTypeNotVisible = 4
- esriNAFieldTypeNotEditable = 8
- esriNAFieldTypeSequence = 16
- esriNAFieldTypeGroup = 32
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.
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;
}
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