RefFieldOpts.cs
C# VB
//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.Globalization;using GrapeCity.Documents.Word;using GrapeCity.Documents.Word.Fields;
namespace DsWordWeb.Demos{ // This sample shows how to use the REF field options to add // and customize a reference to a bookmarked paragraph elsewhere // in the document, either as the paragraph's own list number or // as a copy of its text. public class RefFieldOpts { public GcWordDocument CreateDocx() { var doc = new GcWordDocument();
doc.Body.AddParagraph("A numbered list of requirements:");
// A ListTemplate is used to make paragraphs part of a numbered list: var listTemplate = doc.ListTemplates.Add(BuiltInListTemplateId.NumberDefault, "reqList");
// The name of the target bookmark: const string bmkName = "reqBookmark";
Paragraph bookmarkedItem = null; for (int i = 1; i <= 5; i++) { var p = doc.Body.AddParagraph($"Requirement {i}: the system shall do thing #{i}."); p.ListFormat.Template = listTemplate; p.ListFormat.LevelNumber = 0; // This ensures item spacing consistent with MS Word: p.Style = doc.Styles[BuiltInStyleId.ListParagraph]; if (i == 3) bookmarkedItem = p; } // Bookmark the 3rd requirement so it can be referenced elsewhere: bookmarkedItem.GetRange().Bookmarks.Add(bmkName);
// The RefFieldOptions class provides a convenient strong-typed access // to options specific to the 'REF' MS Word field. This one pulls in // the bookmarked item's own list number: var refByNumber = new RefFieldOptions(doc, bmkName) { DisplayListNumber = DisplayListNumber.AllLevels, Hyperlink = true }; doc.Body.AddParagraph("As specified in item ").AddComplexField(refByNumber) .GetRange().Runs.Add(" above, the system shall comply.");
// This REF pulls in the bookmarked item's text instead, upper-cased: var refByText = new RefFieldOptions(doc, bmkName) { StringStyle = StringStyle.Upper }; doc.Body.AddParagraph("For emphasis: ").AddComplexField(refByText);
// Update fields using a specific culture: doc.UpdateFields(new GrapeCity.Documents.Word.Layout.WordLayoutSettings() { FontCollection = Util.FontCollection, Culture = CultureInfo.GetCultureInfo("en-US") });
// Done: return doc; } }}