FieldIndex

FieldIndex class

Implementa el campo INDEX.

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 construir el índice.
Format { get; }Obtiene unFieldFormatobjeto que proporciona acceso tipificado al formato del campo.
HasPageNumberSeparator { get; }Obtiene un valor que indica si se reemplaza un separador de número de página a través del código del campo.
HasSequenceName { get; }Obtiene un valor que indica si se debe utilizar una secuencia durante la creación del resultado del campo.
Heading { get; set; }Obtiene o establece un encabezado que aparece al comienzo 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 al documento.
IsLocked { get; set; }Obtiene o establece si el campo está bloqueado (no debe recalcular su resultado).
LanguageId { get; set; }Obtiene o establece el ID del idioma utilizado para generar el índice.
LetterRange { get; set; }Obtiene o establece un rango de letras al 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 está entre el separador de campo y el final del campo.
RunSubentriesOnSameLine { get; set; }Obtiene o establece si se ejecutan subentradas en la misma línea que la entrada principal.
Separator { get; }Obtiene el nodo que representa el separador de campo. Puede sernulo .
SequenceName { get; set; }Obtiene o establece el nombre de una secuencia cuyo número está incluido 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 habilitará el uso de texto yomi para las entradas de índice.

Métodos

NombreDescripción
GetFieldCode()Devuelve el 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 de campo de los campos secundarios.
GetFieldCode(bool)Devuelve el 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 padre, devuelve su párrafo padre. Si el campo ya se ha eliminado, devuelvenulo .
Unlink()Realiza la desvinculación del campo.
Update()Realiza la actualización del campo. Se lanza una excepción si el campo ya se está actualizando.
Update(bool)Realiza una actualización de campo. Se lanza una excepción 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 INDEX que mostrará una entrada para cada campo XE encontrado 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 entrada.
FieldIndex index = (FieldIndex)builder.InsertField(FieldType.FieldIndex, true);

// Configure el campo INDEX solo para mostrar los 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 utiliza 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 nueva página, inicie el marcador con un nombre que coincida con el valor
// de la propiedad "BookmarkName" del campo INDEX.
builder.InsertBreak(BreakType.PageBreak);
builder.StartBookmark("MainBookmark");

//El campo INDEX recogerá esta entrada porque está dentro del marcador,
// y su tipo de entrada también coincide con el tipo de entrada del campo INDEX.
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());

// Inserte 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";

//Fin del marcador e inserte un campo XE después.
// Es del mismo tipo que el campo INDEX, 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 rellenar 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 INDEX que mostrará una entrada para cada campo XE encontrado en el documento.
// Cada entrada mostrará el valor de la propiedad de 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 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";

// Establezca la tabla creada por el campo INDEX para que abarque 2 columnas.
index.NumberOfColumns = "2";

// Establezca cualquier entrada con letras iniciales fuera del rango de caracteres "ac" para que se omita.
index.LetterRange = "a-c";

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

// Estos próximos dos campos XE aparecerán bajo el encabezado "A",
// con sus respectivos estilos de texto aplicados también 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 siguientes dos campos XE estarán bajo un encabezado "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 empieza 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