2014-09-04 53 views
1

我与事件处理程序一个简单的按钮:XPages中设定值的动作之前字段=新建文档

Call doc_new.ReplaceItemValue("txt_codformularmain","01") 
.... 
.... 
Set uidoc = w.EditDocument (True, doc_new) 

<xp:eventHandler event="onclick" submit="true" refreshMode="complete"> 
     <xp:this.action> 
      <xp:openPage target="newDocument" name="/doc.xsp"></xp:openPage> 
     </xp:this.action> 
</xp:eventHandler> 

lotusScript我将值添加到一个场,构成形式,在使用前

我试图在postNewDocument事件的doc.xsp

<xp:this.data> 
    <xp:dominoDocument var="Contr" formName="(fmFormularCIP)"> 
     <xp:this.postNewDocument><![CDATA[#{javascript:Contr.replaceItemValue("txt_codformularmain", "01")}]]></xp:this.postNewDocument></xp:dominoDocument> 
</xp:this.data> 

我不希望每次创建该文档的值时,比如说,01,但只有当文档。由特定的按钮组成。其他一些按钮将有机会为该字段添加02值,依此类推。

我如何在XPages开发实现这一目标?谢谢你的时间。

回答

1

这是Web应用程序开发有点棘手,因为你在古典Notes开发确实不能应用在这里。我在这方面有很多问题。

经典的情况是,你有一个页面X有一些值(比如txt_codformularmain将是01)。你如何确定这个值“01”?

在某些情况下,此值是您在页面X中的值。因此您想要将特定值传递给目标页面。一个选项可能是使用查询参数(doc.xsp?myValue=01)并在doc.xsp上使用param.myValue。或者,您可以在转到目标页面之前放置一个sessionScope变量,并在sessionScope.myValue之前使用它。

这取决于你需要什么。查询参数比较安全,因为用户可能会使用同一个按钮两次,而sessionScope变量会导致不一致的行为。另一方面,用户可以更改查询参数,因此您的应用程序可能会有违规行为。

有些情况下,你想在第二页填充某些值。简单的值(例如创建日期,用户名等)可以用表格填充(即加载时的计算值)。有时它会更复杂(例如用户的部门,你必须查找一些视图)。对于这种情况,您需要在目标页面上使用postNewDocument事件。

你已经通过了价值的doc.xsp页面后,你会在你需要的方式消费。如果不在页面上编辑,您可以再次使用postNewDocument事件并按dataSourceName.replaceItemValue('itemName', param.myValue)设置值。如果可以编辑该值,则可以将其用作字段组件的默认值。

我遇到的一个问题:一旦您在postNewDocument中设置了一个值,稍后可能有问题需要更改,直到保存文档数据源。这发生在特定情况下。如果遇到这样的问题,您可能会使用一些带有只读属性的可编辑字段。只要记住:)

+0

它可以是“0”以及价值。该字段应放置在面板上,并且将隐藏。我的愿望是使用此字段值来隐藏/显示基于此值的其他字段。如果this.value =“0”=>一些字段,在action =“newDocument”之后,将被隐藏或不隐藏,如果this.value =“1”=>某些其他字段将被隐藏或不隐藏。 – 2014-09-04 08:07:17

+0

然后,您不必将此值保存到任何数据源,对不对? – 2014-09-04 08:16:23

+0

不幸的是,我必须保存,因为我在列出一些文档的视图公式选择中使用它。例如,vw1列出了一些文件(其中this.value = 0),vw2列出了一些文件(其中this.value = 1) – 2014-09-04 08:28:46