SdtType

SdtType enumeration

指定结构化文档标签 (SDT) 节点的类型。

public enum SdtType

价值观

姓名 价值 描述
None 0 没有为 SDT 分配类型。
Bibliography 1 SDT 表示参考书目条目。
Citation 2 SDT 表示引用。
Equation 3 SDT 代表一个方程。
DropDownList 4 SDT 表示在文档中显示时的下拉列表。
ComboBox 5 SDT 在文档中显示时表示组合框。
Date 6 SDT 在文档中显示时表示日期选择器。
BuildingBlockGallery 7 SDT 表示构建块库类型。
DocPartObj 8 SDT 表示文档部分类型。
Group 9 SDT 表示在文档中显示时的受限分组。
Picture 10 SDT 在文档中显示时表示图片。
RichText 11 SDT 在文档中显示时表示富文本框。
PlainText 12 SDT 在文档中显示时表示纯文本框。
Checkbox 13 SDT 在文档中显示时表示复选框。
RepeatingSection 14 SDT 表示在文档中显示时的重复节类型。
RepeatingSectionItem 15 SDT 表示重复部分项目。
EntityPicker 16 SDT 表示允许用户选择外部内容类型的实例的实体选择器。

例子

展示如何使用内容控制元素的样式。

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

// 以下是将文档中的样式应用到结构化文档标签的两种方法。
// 1 - 应用文档样式集合中的样式对象:
Style quoteStyle = doc.Styles[StyleIdentifier.Quote];
StructuredDocumentTag sdtPlainText =
    new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Inline) { Style = quoteStyle };

// 2 - 按名称引用文档中的样式:
StructuredDocumentTag sdtRichText =
    new StructuredDocumentTag(doc, SdtType.RichText, MarkupLevel.Inline) { StyleName = "Quote" };

builder.InsertNode(sdtPlainText);
builder.InsertNode(sdtRichText);

Assert.AreEqual(NodeType.StructuredDocumentTag, sdtPlainText.NodeType);

NodeCollection tags = doc.GetChildNodes(NodeType.StructuredDocumentTag, true);

foreach (Node node in tags)
{
    StructuredDocumentTag sdt = (StructuredDocumentTag)node;

    Assert.AreEqual(StyleIdentifier.Quote, sdt.Style.StyleIdentifier);
    Assert.AreEqual("Quote", sdt.StyleName);
}

演示如何使用 XML 部件中的数据填充表。

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

CustomXmlPart xmlPart = doc.CustomXmlParts.Add("Books",
    "<books>" +
        "<book>" +
            "<title>Everyday Italian</title>" +
            "<author>Giada De Laurentiis</author>" +
        "</book>" +
        "<book>" +
            "<title>The C Programming Language</title>" +
            "<author>Brian W. Kernighan, Dennis M. Ritchie</author>" +
        "</book>" +
        "<book>" +
            "<title>Learning XML</title>" +
            "<author>Erik T. Ray</author>" +
        "</book>" +
    "</books>");

// 为来自 XML 内容的数据创建标头。
Table table = builder.StartTable();
builder.InsertCell();
builder.Write("Title");
builder.InsertCell();
builder.Write("Author");
builder.EndRow();
builder.EndTable();

// 创建一个内部有重复部分的表。
StructuredDocumentTag repeatingSectionSdt =
    new StructuredDocumentTag(doc, SdtType.RepeatingSection, MarkupLevel.Row);
repeatingSectionSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book", string.Empty);
table.AppendChild(repeatingSectionSdt);

// 在重复部分中添加重复部分项,并将其标记为一行。
// 此表将为我们可以在 XML 文档中找到的每个元素提供一行
// 使用 "/books[1]/book" XPath,其中有三个。
StructuredDocumentTag repeatingSectionItemSdt =
    new StructuredDocumentTag(doc, SdtType.RepeatingSectionItem, MarkupLevel.Row);
repeatingSectionSdt.AppendChild(repeatingSectionItemSdt);

Row row = new Row(doc);
repeatingSectionItemSdt.AppendChild(row);

// 使用为每本书的标题和作者创建的表格单元映射 XML 数据。
StructuredDocumentTag titleSdt =
    new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Cell);
titleSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book[1]/title[1]", string.Empty);
row.AppendChild(titleSdt);

StructuredDocumentTag authorSdt =
    new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Cell);
authorSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book[1]/author[1]", string.Empty);
row.AppendChild(authorSdt);

doc.Save(ArtifactsDir + "StructuredDocumentTag.RepeatingSectionItem.docx");

也可以看看