Xpages java脚本服务器端不更新表单

时间:2015-05-26 01:49:48

标签: xpages lotus

案例:选择客户名称后更新字段:

设置:1个包含数据库路径的设置视图:

DbServer:ServerOne / pcs 目录:办公室 数据库名称:Customer.nsf

这个xpages里面有一个数据源,它调用“document1”

// get the database path :
var vw3:NotesView=database.getView("Setting Path");
var doc3:NotesDocument=vw3.getFirstDocument();
var server:string = doc3.getItemValueString("DbServer");
var DName:string=doc3.getItemValueString("DbName");
var Directory:string=doc3.getItemValueString("Directory");

var DBName:string= Directory+"\\" +DName;
var db:NotesDatabase = session.getDatabase(server, DBName, false);
var vw:NotesView = db.getView("All Customer");
var doc:NotesDocument=vw.getDocumentByKey(document1.getValue("Customer"),true);

if (doc !=null) {
    document1.setValue("Contact", doc.getItemValueString("Contact"));
    document1.setValue("Telephone", doc.getItemValueString("Phone"));
    document1.setValue("Fax", doc.getItemValueString("Fax"));
    document1.setValue("Email", doc.getItemValueString("Email"));
}

问题
该字段不会更新并从“客户”数据库中获取值。

1 个答案:

答案 0 :(得分:2)

我在您的代码中看到了一系列问题:

  1. 将输入字段绑定到范围变量,而不是文档本身。它是一个搜索字符串,不是新文档的一部分。

  2. 您不会检查未找到客户的情况,因此您永远不知道这是否是问题。

  3. 我宁愿使用网址而不是服务器/路径/数据库(但这有点风格)

  4. 所以类似的东西(键入我的头,将包含拼写错误):

    var vw3:NotesView=database.getView("Setting Path");
    var vwe3 = vw3.getFirstEntry();    
    var db = session.resolve(vwe.entries[0]);
    
    var vw:NotesView = db.getView("All Customer");
    var doc:NotesDocument=vw.getDocumentByKey(viewScope.customer,true);
    
    if (doc !=null) {
        viewScope.result = doc.getUniversalID();
        document1.setValue("Contact", doc.getItemValueString("Contact"));
        document1.setValue("Telephone", doc.getItemValueString("Phone"));
        document1.setValue("Fax", doc.getItemValueString("Fax"));
        document1.setValue("Email", doc.getItemValueString("Email"));
        doc.recycle()l
    } else {
        viewScope.result = "Not found!";
    }
    
    // ADD recycle() calls here!!!
    

    将仅显示字段绑定到viewScope.result,以便您更好地了解发生的情况。您的视图必须按客户名称进行排序和索引。

    当然,您可以使用OpenNTF对话框列表控件。