1

我知道如何将计算字段绑定到文档字段。而且我知道如何使用 javascript 来计算计算域。但我该怎么做呢?

假设我在计算字段中的 javascript 是:

 @Name("[ABBREVIATE]" ,@UserName());

如何将其绑定到 document1.ReqName 字段?

4

5 回答 5

3

我使用两个字段:

  1. 计算所需值的隐藏输入字段(使用 xp:inputHidden 控件)。我在组合时使用“默认值”来模拟 Computed - 并使用转换器来模拟 Computed(受 Tommy Valand 的启发)。
  2. 一个可见的计算域或一个可见的输入域设置为只读,执行相同的计算。也许这可以更改为使用 getComponent("").getValue() 显示隐藏输入字段的值?
于 2012-06-19T18:09:08.890 回答
1

也许我错过了重点,但您为什么不简单地执行以下操作?

<xp:inputText id="inputText1" value="#{document1.Reader}">
    <xp:this.defaultValue>
        <![CDATA[#{javascript:@Name("[ABBREVIATE]",@UserName());}]]>
    </xp:this.defaultValue>
</xp:inputText>

这是每个 EL 绑定到 DocumentField 的 Textfield。如果该字段为空,则按默认值计算。

伟大的!- 我错过了重点。但是你可以试试这个:

<xp:text escape="true" id="computedField3">
    <xp:this.value>
        <![CDATA[#{javascript: 
                    if(@IsNewDoc()){
                          document1.replaceItemValue("Reader",@Name("[ABBREVIATE]",@UserName()));
                    }
                    return document1.getItemValue("Reader");}]]>
    </xp:this.value>
</xp:text>
于 2013-08-01T11:20:27.967 回答
0
<xp:text escape="true" id="computedFieldTest1">
[CDATA[#{javascript:
  var userName = "Username: "+("Reader",@Name("[ABBREVIATE]",@UserName()));
  currentDocument.replaceItemValue("computedFieldTest1",userName);
  return userName;
  }]]></xp:this.value>
</xp:text>
于 2014-08-16T15:17:18.910 回答
0

在这种情况下我不会绑定。我将绑定所有其他控件,在这种情况下,在保存操作之前直接使用脚本将其手动添加到文档字段中。

就像这样:(请原谅不在我工作中的代码)

<eventhandler>
   <actionGroup>
      <script><![CDATA[#{javascript:
         doc.replaceItemValue("ReqName", @Name("[ABBREVIATE]" ,@UserName()));
      }]]><script>

      <saveDocument></saveDocument>
   </actionGroup>
</eventhandler>
于 2012-06-19T18:52:29.883 回答
0

对于计算域的值,使用高级数据绑定并选择表达式语言 (EL)。要使用的表达式只是“document1.ReqName”(没有引号)。

于 2012-06-19T17:27:52.437 回答