如何使用SSJS在多值字段中存储日期列表?

时间:2015-06-02 17:56:49

标签: xpages

过去,我已将多值文本数据添加到字段中,将值放入一个简单的JavaScript数组中。例如: doc.replaceItemValue(' AlwaysAccess',[" John Doe"," Bob Smith"]);

有关如何在Notes文档的多值,时间/日期字段中存储一系列日期的任何建议?

2 个答案:

答案 0 :(得分:4)

TL; DR:该概念应与 String 的多值字段几乎相同,您的日期(/时间)值需要有效 NotesDateTime 值妥善存储。

Notes字段可以有多个日期/时间值;您可以在表单中看到这一点,选择日期/时间类型的字段并选中“允许多个值”。

multi-value date fields

您还可以看到来自replaceItemValue page of the Domino Designer Knowledge Center的多值。

要完成 NotesDominoAPI (在SSJS中),我们需要:

  1. 获取NotesItem(我将创建的字段)
  2. 的句柄
  3. 创建我们的值以放入字段(我将使用session.createDateTime创建一对)
  4. 将这些值添加到java.util.Vector,这将被解释为多值(如果您愿意,还应该能够使用SSJS 数组
  5. set the values到现场
  6. 示例代码(我只是在 xp:button onClick 事件中运行它):

    //create a new doc
    var tmpDoc:NotesDocument = database.createDocument();
    //give it a Form
    tmpDoc.replaceItemValue("Form","MultiDateFieldForm");
    
    //create a NotesItem
    var itm:NotesItem = tmpDoc.replaceItemValue("DateFieldName",new java.util.Vector());
    
    //create the Vector, our multi-value container
    var vec:java.util.Vector = new java.util.Vector();
    
    //create a couple NotesDateTime values to store
    var first = session.createDateTime(new Date());
    vec.add(first);
    var second = session.createDateTime("Tomorrow");
    vec.add(second);
    
    //save the values to the item
    itm.setValues(vec);
    
    //save
    tmpDoc.save();
    
    //recycle!
    first.recycle();
    second.recylce();
    itm.recycle();
    tmpDoc.recylce();
    

    [编辑] 正如Frantisek Kossuth在评论中指出的那样,请务必回收NotesDomino API对象(尤其是日期/时间对象)。我已经更新了代码以反映这一点。 [/编辑]

    运行后检查基于表单的视图,我给出了这个(字段属性反映了日期/时间值的多值字段;开箱即用的两个镜头)。

    first shot of the new doc, with multi-value DateTime field second shot, shows the second value as a separate value in the "Time/Date List or Range"

答案 1 :(得分:0)

基本上,我发现我需要创建一个向量来存储日期列表,并用NotesDateTime对象填充它。

var vRepeatDates:java.util.Vector = new java.util.Vector();

就我而言,我需要增加日期x次。所以,我使用for循环将NotesDateTime元素添加到向量中(同时使用.adjustDay(1)来递增日期)

最后使用replaceItemValue()

将矢量存储在字段中
doc.replaceItemValue("RepeatInstanceDates",vRepeatDates);