从Lotus Notes到表单内的XPage的动态表

时间:2013-01-18 17:17:43

标签: xpages

我正在使用现有的Lotus Notes数据库并转换为Xpages。其中一个表包含3个多值字段,New Line作为分隔符,“Add New”,“Modify”和“Delete”按钮控制数据的输入和删除方式。客户希望XPage看起来尽可能类似于Notes GUI,我想我会使用dijit对话框来添加新行并找出删除和修改。但据我所知,对话框只能在客户端使用,并且输入到对话框的数据不能放到Xpage上。这是真的?我想我会在重复中使用可编辑的字段,但我也无法正常工作。

基本上,解决方案必须显示过去文档的多值字段,并且还能够允许用户编辑那些旧文档...以及在创建新文档时类似/完全相同的工作方式。

提前感谢您提供的任何帮助,因为它似乎比我可能做得更容易。

我只想在下面的解决方案后更新,这似乎是解决此问题的绝佳方法。但是,作为一名承认的XPages新手,我真的在努力应用这个概念。这就是我所拥有的,显然它无法正常工作。

从逻辑上讲,这听起来像是一个很好的解决方案。但是,我不是xpages专家,即使开始,我也无法正常工作。任何能够让我更容易开始使用的东西都将是一个很大的帮助。我不是一个经常寻找“答案”的人......我只是很难处理这个多值字段表问题。提前再次感谢...这就是我写的那个出现500错误的内容。 “A”是多值字段名称。

<xp:table>
    <xp:tr>
        <xp:td>
            <xp:repeat id="repeat1" rows="30" var="rowdata">
                <xp:this.value><![CDATA[#{javascript:document1.getItemValue("A")}]]></xp:this.value>
                <xp:tr id="valueRow">
                    <xp:td>
                        <xp:text
                            value="#{javascript: return rowdata[i]}" />
                    </xp:td>
                    <xp:eventHandler event="onclick" submit="false"
                        refreshMode="partial" execMode="partial" execId="valueRow"
                        immediate="true">
                        <xp:this.action>
                            <![CDATA[#{javascript:document1.getItemValue("A")}]]>
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:tr>
            </xp:repeat>
        </xp:td>
    </xp:tr>
</xp:table>

1 个答案:

答案 0 :(得分:2)

我会说以下

  1. 创建一个重复控件,它将从多值字段中提取数据并将其打印为只读。重复控件将生成一个tr结构,并在onclick事件上绑定一个事件处理程序。像这样:
  2. enter image description here

    2在onclick事件中更改tr clientside的样式(使用dojo),以便人们知道他们选择了该行并在作用域var中设置该行的id / identifier

    3在重复控件上方添加添加,删除,更新等控件。添加和更新将打开一个对话框,将从所选行中读取数据(如果是添加操作,则为无)。删除控件将从多行值字段中删除数据,保存文档并重新生成重复控件。

    这应该有效。