Word 2013嵌套重复部分内容控件

时间:2014-10-10 17:11:27

标签: c# ms-word openxml openxml-sdk word-2013

我遇到了在其他重复部分控件中嵌套重复部分控件的问题。

想象一下,我在数据中心的环境中枚举vm主机中的服务器

Datacenter1
    Environment1
        VMHost1
           Server1
           Server2
        VMHost2
           Server3
           Server4
    Environment2
        VMHost3
           Server5
...

我的文档需要有许多重复的层次结构部分 这是该文件的基本结构:

Datacenter1 Header

    Some description text

    ----- Environment1 Table ---------
    | Header1  | Header 2 | Header 3 |
    |--------------------------------|
    | VMHost1  | Server1  | ........ |
    |          | Server2  | ........ |
    |--------------------------------|
    | VMHost2  | Server3  | ........ |
    |          | Server4  | ........ |
    ----------------------------------

    ----- Environment2 Table ---------
    | Header1  | Header 2 | Header 3 |
    |--------------------------------|
    | VMHost3  | Server5  | ........ |
    ----------------------------------

Datacenter2 Header

    Some description text

    ----- Environment3 Table ---------
    | Header1  | Header 2 | Header 3 |
    |--------------------------------|
    | VMHost1  | Server1  | ........ |
    |          | Server2  | ........ |
    |--------------------------------|
    | VMHost2  | Server3  | ........ |
    |          | Server4  | ........ |
    ----------------------------------

如您所见,我需要一些嵌套的内容控件。

但我的行为非常时髦。就像我添加一个嵌套的重复部分一样,它有时会删除它应该包裹在表行周围的重复控件。

其他时候,我认为我已经正确设置了一切,然后测试它我点击[+]重复整个数据中心部分,但它不仅仅重复该部分,或者有时重复其他部分同一部分中的部分。

我没有使用分组功能 - 如果我这样做,我不确定它是否应该或如何帮助。

希望这不是实施中的错误,我只是做错了什么......但是我担心这个问题已经发生了变化。方案不受支持。

最终,我将在UI中锁定所有这些控件,并使用Open XML SDK注入的自定义XML部件填充它。我在文档中有许多其他部分 - 包括重复部分 - 工作正常,但它们的重复部分没有嵌套。

我已经有了应该支持嵌套的XML结构,并且当我按照我的方式映射这些控件时一切都很顺利,直到我修改XML以将更多子节点添加到各个节点来测试重复节。在某些情况下,它删除了整个部分,在其他情况下,它重复嵌套的子节点作为父节点,重复整个表。

我想问题是:
 1.如果您已成功嵌套重复部分,如何?
 如果你遇到这些时髦的行为,你是如何解决这个问题的?
 3.关于内容控件集,重复节的分组功能的目的是什么,我应该使用它们来实现这一目的吗?

2 个答案:

答案 0 :(得分:1)

我设法让这个工作 以下是一个示例文档:http://1drv.ms/1nkMGVF
我使用this tool来帮助命名,绑定(AutoMap!),&导航内容控件。

看起来问题是两件事的组合:

  1. 不兼容的XML结构
  2. 在基于表格的重复部分
  3. 中混合基于段落的重复部分


    不兼容的XML
    为了解决重复表行中单元格中嵌套段落重复的问题,我用外部元素包装重复元素:

    <relativeRoot>
        <nonRepeatingNode/>
        <table>
            <repeatingTableRow>
                <text1/>
                <text2/>
            </repeatingTableRow>
            <repeatingTableRow>
                <text1/>
                <text2/>
            </repeatingTableRow>
        </table>
    </relativeRoot>
    

    但是这会在通过XML添加重复元素或使用内置Word功能添加重复节时引起问题。所以我将其更改为以下内容(已移除<table>):

    <relativeRoot>
        <nonRepeatingNode/>
        <repeatingTableRow>
            <text1/>
            <text2/>
        </repeatingTableRow>
        <repeatingTableRow>
            <text1/>
            <text2/>
        </repeatingTableRow>
    </relativeRoot>
    


    混合重复部分

    重复段通常可以包装段落文本,但是当重复段位于表格单元格内时会出现,其行包含重复部分,这会导致呈现嵌套重复的问题。

    以下是层次结构的表示:

    repeating section control
    ^-> table
        ^-> row (fixed, non-repeating)
            ^-> column1a: plain text control
            ^-> column2a: table
                         ^-> repeating section control
                             ^-> row
                                 ^-> column1b: plain text control
                                 ^-> column2b: repeating section control
                                               ^--> plain text control
    
            ^-> column3a: repeating section control
                         ^-> plain text control
    
    
    - the repeats within column3a work
    - the repeats of row column1b/2b do not
    

    在此之后:

    repeating section control
    ^-> table
        ^-> row (fixed, non-repeating)
            ^-> column1a: plain text control
            ^-> column2a: table
                          ^-> repeating section control
                              ^-> row
                                  ^-> column1b: plain text control
                                  ^-> column2b: table 
                                                ^-> repeating section control
                                                    ^-> row                                              
                                                        ^--> column1c: plain text control
    
            ^-> column3a: repeating section control
                         ^-> plain text control
    


    可能还有其他方法可以完成这项工作(check here),但无论出于何种原因,我都无法使其发挥作用。

答案 1 :(得分:0)

我使用Word 2013进行了测试,它对我有用。

首先,我在整个表格周围放置一个重复节内容控件(RSCC),然后我将另一个RSCC放在一个表格行(不是最后一个!)。最后,我将纯文本内容控件放入表格单元格中。