FieldIndex

FieldIndex class

Implémente le champ INDEX.

Pour en savoir plus, visitez leTravailler avec des champs article documentaire.

public class FieldIndex : Field

Constructeurs

NomLa description
FieldIndex()Default_Constructor

Propriétés

NomLa description
BookmarkName { get; set; }Obtient ou définit le nom du signet qui marque la partie du document utilisée pour créer l’index.
CrossReferenceSeparator { get; set; }Obtient ou définit la séquence de caractères utilisée pour séparer les références croisées et les autres entrées.
DisplayResult { get; }Obtient le texte qui représente le résultat du champ affiché.
End { get; }Obtient le nœud qui représente la fin du champ.
EntryType { get; set; }Obtient ou définit un type d’entrée d’index utilisé pour créer l’index.
Format { get; }Obtient unFieldFormat objet qui fournit un accès typé au formatage du champ.
HasPageNumberSeparator { get; }Obtient une valeur indiquant si un séparateur de numéro de page est remplacé via le code du champ.
HasSequenceName { get; }Obtient une valeur indiquant si une séquence doit être utilisée lors de la création du résultat du champ.
Heading { get; set; }Obtient ou définit un en-tête qui apparaît au début de chaque ensemble d’entrées pour une lettre donnée.
IsDirty { get; set; }Obtient ou définit si le résultat actuel du champ n’est plus correct (périmé) en raison d’autres modifications apportées au document.
IsLocked { get; set; }Obtient ou définit si le champ est verrouillé (ne doit pas recalculer son résultat).
LanguageId { get; set; }Obtient ou définit l’ID de langue utilisé pour générer l’index.
LetterRange { get; set; }Obtient ou définit une plage de lettres à laquelle limite l’index.
LocaleId { get; set; }Obtient ou définit le LCID du champ.
NumberOfColumns { get; set; }Obtient ou définit le nombre de colonnes par page utilisées lors de la création de l’index.
PageNumberListSeparator { get; set; }Obtient ou définit la séquence de caractères utilisée pour séparer deux numéros de page dans une liste de numéros de page.
PageNumberSeparator { get; set; }Obtient ou définit la séquence de caractères utilisée pour séparer une entrée d’index et son numéro de page.
PageRangeSeparator { get; set; }Obtient ou définit la séquence de caractères utilisée pour séparer le début et la fin d’une plage de pages.
Result { get; set; }Obtient ou définit le texte situé entre le séparateur de champ et la fin du champ.
RunSubentriesOnSameLine { get; set; }Obtient ou définit si les sous-entrées doivent être exécutées sur la même ligne que l’entrée principale.
Separator { get; }Obtient le nœud qui représente le séparateur de champ. Peut êtrenul .
SequenceName { get; set; }Obtient ou définit le nom d’une séquence dont le numéro est inclus avec le numéro de page.
SequenceSeparator { get; set; }Obtient ou définit la séquence de caractères utilisée pour séparer les numéros de séquence et les numéros de page.
Start { get; }Obtient le nœud qui représente le début du champ.
virtual Type { get; }Obtient le type de champ Microsoft Word.
UseYomi { get; set; }Obtient ou définit s’il faut activer l’utilisation du texte yomi pour les entrées d’index.

Méthodes

NomLa description
GetFieldCode()Renvoie le texte entre le début du champ et le séparateur de champ (ou la fin du champ s’il n’y a pas de séparateur). Le code de champ et le résultat du champ des champs enfants sont inclus.
GetFieldCode(bool)Renvoie le texte entre le début du champ et le séparateur de champ (ou la fin du champ s’il n’y a pas de séparateur).
Remove()Supprime le champ du document. Renvoie un nœud juste après le champ. Si la fin du champ est le dernier child de son nœud parent, renvoie son paragraphe parent. Si le champ est déjà supprimé, renvoienul .
Unlink()Effectue la dissociation du champ.
Update()Effectue la mise à jour du champ. Lance si le champ est déjà mis à jour.
Update(bool)Effectue une mise à jour du champ. Lance si le champ est déjà mis à jour.

Remarques

Construit un index en utilisant les entrées d’index spécifiées par les champs XE et insère cet index à cet endroit dans le document.

Exemples

Montre comment créer un champ INDEX, puis utiliser les champs XE pour le remplir avec des entrées.

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

// Créez un champ INDEX qui affichera une entrée pour chaque champ XE trouvé dans le document.
// Chaque entrée affichera la valeur de la propriété Text du champ XE sur le côté gauche
// et la page contenant le champ XE à droite.
// Si les champs XE ont la même valeur dans leur propriété "Texte",
// le champ INDEX les regroupera en une seule entrée.
FieldIndex index = (FieldIndex)builder.InsertField(FieldType.FieldIndex, true);

// Configurez le champ INDEX uniquement pour afficher les champs XE qui se trouvent dans les limites
// d'un marque-page nommé "MainBookmark", et dont les propriétés "EntryType" ont la valeur "A".
// Pour les champs INDEX et XE, la propriété "EntryType" utilise uniquement le premier caractère de sa valeur de chaîne.
index.BookmarkName = "MainBookmark";
index.EntryType = "A";

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

// Sur une nouvelle page, démarre le signet avec un nom qui correspond à la valeur
// de la propriété "BookmarkName" du champ INDEX.
builder.InsertBreak(BreakType.PageBreak);
builder.StartBookmark("MainBookmark");

// Le champ INDEX récupérera cette entrée car elle se trouve à l'intérieur du signet,
// et son type d'entrée correspond également au type d'entrée du champ 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());

// Insère un champ XE qui n'apparaîtra pas dans l'INDEX car les types d'entrée ne correspondent pas.
builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Index entry 2";
indexEntry.EntryType = "B";

// Termine le signet et insère ensuite un champ XE.
// Il est du même type que le champ INDEX, mais n'apparaîtra pas
// puisqu'il est en dehors des limites du signet.
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");

Montre comment remplir un champ INDEX avec des entrées à l’aide de champs XE et également modifier son apparence.

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

// Créez un champ INDEX qui affichera une entrée pour chaque champ XE trouvé dans le document.
// Chaque entrée affichera la valeur de la propriété Text du champ XE sur le côté gauche,
// et le numéro de la page qui contient le champ XE à droite.
// Si les champs XE ont la même valeur dans leur propriété "Texte",
// le champ INDEX les regroupera en une seule entrée.
FieldIndex index = (FieldIndex)builder.InsertField(FieldType.FieldIndex, true);
index.LanguageId = "1033";

// Définir la valeur de cette propriété sur "A" regroupera toutes les entrées par leur première lettre,
// et placez cette lettre en majuscule au-dessus de chaque groupe.
index.Heading = "A";

// Définit la table créée par le champ INDEX pour qu'elle s'étende sur 2 colonnes.
index.NumberOfColumns = "2";

// Définit toutes les entrées avec des lettres de début en dehors de la plage de caractères "ac" à omettre.
index.LetterRange = "a-c";

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

// Ces deux champs XE suivants apparaîtront sous l'en-tête "A",
// avec leurs styles de texte respectifs également appliqués à leurs numéros de page.
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());

// Les deux champs XE suivants seront sous les en-têtes "B" et "C" dans la table des matières des champs INDEX.
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";

// Les champs INDEX trient toutes les entrées par ordre alphabétique, donc cette entrée apparaîtra sous "A" avec les deux autres.
builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Avocado";

// Cette entrée n'apparaîtra pas car elle commence par la lettre "D",
// qui se trouve en dehors de la plage de caractères "ac" définie par la propriété LetterRange du champ 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");

Voir également