RunSubentriesOnSameLine

FieldIndex.RunSubentriesOnSameLine property

Hämtar eller ställer in om underposter ska köras på samma rad som huvudposten.

public bool RunSubentriesOnSameLine { get; set; }

Exempel

Visar hur man arbetar med underposter i ett INDEX-fält.

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

// Skapa ett INDEX-fält som visar en post för varje XE-fält som finns i dokumentet.
// Varje post kommer att visa XE-fältets textegenskapsvärde på vänster sida,
// och numret på sidan som innehåller XE-fältet till höger.
// INDEX-posten samlar alla XE-fält med matchande värden i egenskapen "Text"
// i en post i motsats till att göra en post för varje XE-fält.
FieldIndex index = (FieldIndex)builder.InsertField(FieldType.FieldIndex, true);
index.PageNumberSeparator = ", see page ";
index.Heading = "A";

// XE-fält som har en Text-egenskap vars värde blir rubriken för INDEX-posten.
// Om detta värde innehåller två strängsegment delade med ett kolon (INDEX-posten kommer att behandla :) avgränsare,
// det första segmentet är rubrik, och det andra segmentet blir underrubrik.
// INDEX-fältet grupperar först posterna alfabetiskt, sedan om det finns flera XE-fält med samma
// rubriker, kommer INDEX-fältet att undergruppera dem ytterligare efter värdena för dessa rubriker.
// Det kan finnas flera undergrupperingar, beroende på hur många gånger
// Textegenskaperna för XE-fält segmenteras så här.
// Som standard kommer en grupp för INDEX-fält att skapa en ny rad för varje underrubrik inom denna grupp.
// Vi kan ställa in RunSubentriesOnSameLine-flaggan till true för att behålla rubriken,
// och varje underrubrik för gruppen på en rad istället, vilket kommer att göra INDEX-fältet mer kompakt.
index.RunSubentriesOnSameLine = runSubentriesOnTheSameLine;

if (runSubentriesOnTheSameLine)
    Assert.AreEqual(" INDEX  \\e \", see page \" \\h A \\r", index.GetFieldCode());
else
    Assert.AreEqual(" INDEX  \\e \", see page \" \\h A", index.GetFieldCode());

// Infoga två XE-fält, var och en på en ny sida, och med samma rubrik som heter "Rubrik 1",
// som INDEX-fältet kommer att använda för att gruppera dem.
// Om RunSubentriesOnSameLine är falskt kommer INDEX-tabellen att skapa tre rader:
// en rad för grupperingsrubriken "Rubrik 1", och ytterligare en rad för varje underrubrik.
// Om RunSubentriesOnSameLine är sant, kommer INDEX-tabellen att skapa en enrads
// post som omfattar rubriken och varje underrubrik.
builder.InsertBreak(BreakType.PageBreak);
FieldXE indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Heading 1:Subheading 1";

Assert.AreEqual(" XE  \"Heading 1:Subheading 1\"", indexEntry.GetFieldCode());

builder.InsertBreak(BreakType.PageBreak);
indexEntry = (FieldXE)builder.InsertField(FieldType.FieldIndexEntry, true);
indexEntry.Text = "Heading 1:Subheading 2";

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

Se även