FieldCollection Class

A collection of Field objects that represents the fields in the specified range.

ExpandedInheritance Hierarchy

SystemObject
  Aspose.Words.FieldsFieldCollection

Namespace:  Aspose.Words.Fields
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.10.0

ExpandedSyntax

public class FieldCollection : IEnumerable<Field>, 
	IEnumerable

The FieldCollection type exposes the following members.

ExpandedProperties

  NameDescription
Public propertyCode exampleCount
Returns the number of the fields in the collection.
Public propertyCode exampleItem
Returns a field at the specified index.

ExpandedMethods

  NameDescription
Public methodCode exampleClear
Removes all fields of this collection from the document and from this collection itself.
Public methodEquals (Inherited from Object.)
Public methodCode exampleGetEnumerator
Returns an enumerator object.
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Public methodCode exampleRemove
Removes the specified field from this collection and from the document.
Public methodCode exampleRemoveAt
Removes a field at the specified index from this collection and from the document.
Public methodToString (Inherited from Object.)

ExpandedRemarks

An instance of this collection iterates fields which start fall within the specified range.

The FieldCollection collection does not own the fields it contains, rather, is just a selection of fields.

The FieldCollection collection is "live", i.e. changes to the children of the node object that it was created from are immediately reflected in the fields returned by the FieldCollection properties and methods.

ExpandedExamples

Shows how to work with a document's field collection.
public void FieldCollection()
{
    // Create a new document and insert some fields
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    builder.InsertField(" DATE \\@ \"dddd, d MMMM yyyy\" ");
    builder.InsertField(" TIME ");
    builder.InsertField(" REVNUM ");
    builder.InsertField(" AUTHOR  \"John Doe\" ");
    builder.InsertField(" SUBJECT \"My Subject\" ");
    builder.InsertField(" QUOTE \"Hello world!\" ");
    doc.UpdateFields();

    // Get the collection that contains all the fields in a document
    FieldCollection fields = doc.Range.Fields;
    Assert.AreEqual(6, fields.Count);

    // Iterate over the field collection and print contents and type of every field using a custom visitor implementation
    FieldVisitor fieldVisitor = new FieldVisitor();

    using (IEnumerator<Field> fieldEnumerator = fields.GetEnumerator())
    {
        while (fieldEnumerator.MoveNext())
        {
            if (fieldEnumerator.Current != null)
            {
                fieldEnumerator.Current.Start.Accept(fieldVisitor);
                fieldEnumerator.Current.Separator?.Accept(fieldVisitor);
                fieldEnumerator.Current.End.Accept(fieldVisitor);
            }
            else
            {
                Console.WriteLine("There are no fields in the document.");
            }
        }
    }

    Console.WriteLine(fieldVisitor.GetText());

    // Get a field to remove itself
    fields[0].Remove();
    Assert.AreEqual(5, fields.Count);

    // Remove a field by reference
    Field lastField = fields[3];
    fields.Remove(lastField);
    Assert.AreEqual(4, fields.Count);

    // Remove a field by index
    fields.RemoveAt(2);
    Assert.AreEqual(3, fields.Count);

    // Remove all fields from the document
    fields.Clear();
    Assert.AreEqual(0, fields.Count);
}

/// <summary>
/// Document visitor implementation that prints field info.
/// </summary>
public class FieldVisitor : DocumentVisitor
{
    public FieldVisitor()
    {
        mBuilder = new StringBuilder();
    }

    /// <summary>
    /// Gets the plain text of the document that was accumulated by the visitor.
    /// </summary>
    public string GetText()
    {
        return mBuilder.ToString();
    }

    /// <summary>
    /// Called when a FieldStart node is encountered in the document.
    /// </summary>
    public override VisitorAction VisitFieldStart(FieldStart fieldStart)
    {
        mBuilder.AppendLine("Found field: " + fieldStart.FieldType);
        mBuilder.AppendLine("\tField code: " + fieldStart.GetField().GetFieldCode());
        mBuilder.AppendLine("\tDisplayed as: " + fieldStart.GetField().Result);

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a FieldSeparator node is encountered in the document.
    /// </summary>
    public override VisitorAction VisitFieldSeparator(FieldSeparator fieldSeparator)
    {
        mBuilder.AppendLine("\tFound separator: " + fieldSeparator.GetText());

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a FieldEnd node is encountered in the document.
    /// </summary>
    public override VisitorAction VisitFieldEnd(FieldEnd fieldEnd)
    {
        mBuilder.AppendLine("End of field: " + fieldEnd.FieldType);

        return VisitorAction.Continue;
    }

    private readonly StringBuilder mBuilder;
}

ExpandedSee Also