如果字段值已在列表中,则xpages显示消息

时间:2014-11-14 09:39:49

标签: xpages

有一个inputText - 字符串(代表公司名称):txt_NumeCompanie 我们假设已有2个文档。保存了上述字段值:ABCXpages

我想做什么:

  1. 如果我创建一个新文档。并使用ABCXpages完成公司名称字段,显示一条消息,让我知道已存在该名称的文档。
  2. 如果我打开以Xpages作为公司名称的文档,并且我将其再次更改为ABC上述消息。
  3. 我尝试过的内容:该字段的onChange事件会刷新包含<xp:div styleClass="lotusMessage"的面板。此div具有以下呈现属性:

         if ( currentDocument.isNewNote())
    {
    if ( @IsMember(Cdoc.getItemValueString("txt_NumeCompanie"),@Unique(@DbColumn(@DbName(),"vwComp",0))) )
        { return true;}
         else { return false; }
    } 
    else
    {   
    var newe = Cdoc.getItemValueString("txt_NumeCompanie");   
    if ( @IsMember(newe,@Unique(@DbLookup(@DbName(),"vwCompanii",Cdoc.getDocument().getUniversalID(),2))) ) 
        { return false;}
         else { return true; }
    }
    

    vwCompanii有一列列出了所有txt_NumeCompanie值,而vwCompanii有两列:@Text(@DocumentUNiqueID))txt_NumeCompanie&#39;。上面的代码适用于.isNewNote()文档。但是,如果我打开一个现有的doc。 (具有txt_NumeCompanie = ABC)消息再次出现,而不更改任何内容。我想从上面的项目清单中了解2.案例。

    此外,通过打开现有的文档。来自viewPanel,当doc。打开并显示,即使txt_NumeCompanie的值未更改,脚本消息也会立即显示。如何仅在发生onChange事件时才触发脚本消息,而不是在文档打开时触发?

    我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

@DbColumn check在这里为你工作。要采用的方法是访问NotesView,然后查找与密钥匹配的文档,然后检查该文档是否与当前文档具有不同的UNID。

这是一个常见的要求,这就是为什么最新版本的OpenNTF Domino API我添加了View.checkUnique(key,srcDoc),请参阅https://github.com/OpenNTF/org.openntf.domino/blob/master/org.openntf.domino/src/org/openntf/domino/impl/View.java#L2645-2663。 (行号将在以后的版本中更改)。请记住,此代码依赖于OpenNTF Domino API核心中的构造,如易于迭代,自动回收等。

答案 1 :(得分:0)

算法很简单:按键值查找文档,并且仅当以下情况允许保存:

  • 对于新文档,没有这样的密钥
  • 对于保存的文档,当前文档中只使用了一个键(unids match)。

段:

try {
    var unid = @DbLookup("", "view", "key", 1, '[RETURNDOCUMENTUNIQUEID]');
    if (unid && unid instanceof String) {
        if (doc.isNewNote()) {
            // key was found, that's bad
            return false; //(do not continue)
        } else {
            return unid == doc.getUniversalID();
        }
    } else if (!unid) {
        return true; // key not found, it's unique, go
    } else {
        return false; // duplicates found
    }
}

http://www-01.ibm.com/support/knowledgecenter/SSVRGU_8.5.3/com.ibm.designer.domino.main.doc/H_DBLOOKUP_NOTES_DATABASES.html