FieldIndex

FieldIndex class

Implementa el campo ÍNDICE.

Para obtener más información, visite elTrabajar con campos artículo de documentación.

public class FieldIndex : Field

Constructores

NombreDescripción
FieldIndex()Constructor predeterminado

Propiedades

NombreDescripción
BookmarkName { get; set; }Obtiene o establece el nombre del marcador que marca la parte del documento utilizada para crear el índice.
CrossReferenceSeparator { get; set; }Obtiene o establece la secuencia de caracteres que se utiliza para separar referencias cruzadas y otras entradas.
DisplayResult { get; }Obtiene el texto que representa el resultado del campo mostrado.
End { get; }Obtiene el nodo que representa el final del campo.
EntryType { get; set; }Obtiene o establece un tipo de entrada de índice utilizado para crear el índice.
Format { get; }Obtiene unFieldFormat objeto que proporciona acceso escrito al formato del campo.
HasPageNumberSeparator { get; }Obtiene un valor que indica si un separador de número de página se anula mediante el código del campo.
HasSequenceName { get; }Obtiene un valor que indica si se debe utilizar una secuencia mientras se genera el resultado del campo.
Heading { get; set; }Obtiene o establece un encabezado que aparece al principio de cada conjunto de entradas para cualquier letra determinada.
IsDirty { get; set; }Obtiene o establece si el resultado actual del campo ya no es correcto (obsoleto) debido a otras modificaciones realizadas en el documento.
IsLocked { get; set; }Obtiene o establece si el campo está bloqueado (no debe volver a calcular su resultado).
LanguageId { get; set; }Obtiene o establece el ID de idioma utilizado para generar el índice.
LetterRange { get; set; }Obtiene o establece un rango de letras a las que limita el índice.
LocaleId { get; set; }Obtiene o establece el LCID del campo.
NumberOfColumns { get; set; }Obtiene o establece el número de columnas por página utilizadas al crear el índice.
PageNumberListSeparator { get; set; }Obtiene o establece la secuencia de caracteres que se utiliza para separar dos números de página en una lista de números de página.
PageNumberSeparator { get; set; }Obtiene o establece la secuencia de caracteres que se utiliza para separar una entrada de índice y su número de página.
PageRangeSeparator { get; set; }Obtiene o establece la secuencia de caracteres que se utiliza para separar el inicio y el final de un rango de páginas.
Result { get; set; }Obtiene o establece el texto que se encuentra entre el separador de campo y el final del campo.
RunSubentriesOnSameLine { get; set; }Obtiene o establece si las subentradas de ejecución están en la misma línea que la entrada principal.
Separator { get; }Obtiene el nodo que representa el separador de campos. Puede sernulo .
SequenceName { get; set; }Obtiene o establece el nombre de una secuencia cuyo número se incluye con el número de página.
SequenceSeparator { get; set; }Obtiene o establece la secuencia de caracteres que se utiliza para separar los números de secuencia y los números de página.
Start { get; }Obtiene el nodo que representa el inicio del campo.
virtual Type { get; }Obtiene el tipo de campo de Microsoft Word.
UseYomi { get; set; }Obtiene o establece si se habilita el uso de texto yomi para las entradas de índice.

Métodos

NombreDescripción
GetFieldCode()Devuelve texto entre el inicio del campo y el separador de campo (o el final del campo si no hay separador). Se incluyen tanto el código de campo como el resultado del campo de los campos secundarios.
GetFieldCode(bool)Devuelve texto entre el inicio del campo y el separador de campo (o el final del campo si no hay separador).
Remove()Elimina el campo del documento. Devuelve un nodo justo después del campo. Si el final del campo es el último hijo de su nodo principal, devuelve su párrafo principal. Si el campo ya está eliminado, devuelvenulo .
Unlink()Realiza la desvinculación del campo.
Update()Realiza la actualización del campo. Se produce si el campo ya se está actualizando.
Update(bool)Realiza una actualización de campo. Se produce si el campo ya se está actualizando.

Observaciones

Crea un índice utilizando las entradas de índice especificadas por los campos XE e inserta ese índice en este lugar del documento.

Ejemplos

Muestra cómo crear un campo ÍNDICE y luego usar campos XE para completarlo con entradas.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Cree un campo ÍNDICE que mostrará una entrada para cada campo XE que se encuentra en el documento.
// Cada entrada mostrará el valor de la propiedad Texto del campo XE en el lado izquierdo
// y la página que contiene el campo XE a la derecha.
// Si los campos XE tienen el mismo valor en su propiedad "Texto",
// el campo ÍNDICE los agrupará en una sola entrada.
FieldIndex index = (FieldIndex)builder.InsertField(FieldType.FieldIndex, true);

// Configure el campo ÍNDICE solo para mostrar campos XE que estén dentro de los límites
// de un marcador llamado "MainBookmark", y cuyas propiedades "EntryType" tienen un valor de "A".
// Para los campos INDEX y XE, la propiedad "EntryType" solo usa el primer carácter de su valor de cadena.
index.BookmarkName = "MainBookmark";
index.EntryType = "A";

Assert.AreEqual(" INDEX  \\b MainBookmark \\f A", index.GetFieldCode());

// En una página nueva, inicia el marcador con un nombre que coincida con el valor
// de la propiedad "BookmarkName" del campo ÍNDICE.
builder.InsertBreak(BreakType.PageBreak);
builder.StartBookmark("MainBookmark");

// El campo ÍNDICE recogerá esta entrada porque está dentro del marcador,
// y su tipo de entrada también coincide con el tipo de entrada del campo ÍNDICE.
FieldXE indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Index entry 1";
indexEntry.EntryType = "A";

Assert.AreEqual(" XE  \"Index entry 1\" \\f A", indexEntry.GetFieldCode());

// Inserta un campo XE que no aparecerá en el ÍNDICE porque los tipos de entrada no coinciden.
builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Index entry 2";
indexEntry.EntryType = "B";

// Finaliza el marcador y luego inserta un campo XE.
// Es del mismo tipo que el campo ÍNDICE, pero no aparecerá
// ya que está fuera de los límites del marcador.
builder.EndBookmark("MainBookmark");
builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Index entry 3";
indexEntry.EntryType = "A";

doc.UpdatePageLayout();
doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.INDEX.XE.Filtering.docx");

Muestra cómo completar un campo ÍNDICE con entradas utilizando campos XE y también modificar su apariencia.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Cree un campo ÍNDICE que mostrará una entrada para cada campo XE que se encuentra en el documento.
// Cada entrada mostrará el valor de la propiedad Texto del campo XE en el lado izquierdo,
// y el número de la página que contiene el campo XE a la derecha.
// Si los campos XE tienen el mismo valor en su propiedad "Texto",
// el campo ÍNDICE los agrupará en una sola entrada.
FieldIndex index = (FieldIndex)builder.InsertField(FieldType.FieldIndex, true);
index.LanguageId = "1033";

// Establecer el valor de esta propiedad en "A" agrupará todas las entradas por su primera letra,
// y coloca esa letra en mayúscula encima de cada grupo.
index.Heading = "A";

// Establece la tabla creada por el campo ÍNDICE para que abarque 2 columnas.
index.NumberOfColumns = "2";

// Establece que se omitirán todas las entradas con letras iniciales fuera del rango de caracteres "ac".
index.LetterRange = "a-c";

Assert.AreEqual(" INDEX  \\z 1033 \\h A \\c 2 \\p a-c", index.GetFieldCode());

// Estos dos campos XE siguientes aparecerán bajo el encabezado "A",
// con sus respectivos estilos de texto también aplicados a sus números de página.
builder.InsertBreak(BreakType.PageBreak);
FieldXE indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Apple";
indexEntry.IsItalic = true;

Assert.AreEqual(" XE  Apple \\i", indexEntry.GetFieldCode());

builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Apricot";
indexEntry.IsBold = true;

Assert.AreEqual(" XE  Apricot \\b", indexEntry.GetFieldCode());

// Los dos siguientes campos XE estarán bajo los encabezados "B" y "C" en la tabla de contenido de los campos ÍNDICE.
builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Banana";

builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Cherry";

// Los campos ÍNDICE ordenan todas las entradas alfabéticamente, por lo que esta entrada aparecerá debajo de "A" con las otras dos.
builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Avocado";

// Esta entrada no aparecerá porque comienza con la letra "D",
// que está fuera del rango de caracteres "ac" que define la propiedad LetterRange del campo INDEX.
builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Durian";

doc.UpdatePageLayout();
doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.INDEX.XE.Formatting.docx");

Ver también