我有一个带有扩展库中的对话框控件的 XPage。
对话框工作正常——打开,做它需要做的事情,但是,当我尝试更新“父”文档时,它不起作用。
我将 XPage 数据源作为名为 document1 的 Domino 文档。我在阅读后添加了这个: 当我从扩展库对话框中保存文档时,一些值是空白的
<xp:this.data>
<xp:dominoDocument var="document1" formName="speakerReq"></xp:dominoDocument
</xp:this.data>
在对话框控件上,我有一个搜索按钮,它调用一个 servlet 并返回经过解析并构建到 HTML 表中的 JSON。第一个单元格是一个链接,当单击该链接时,它会从客户端 JavaScript 库中调用一个函数。该功能是使用返回的 JSON 中的值更新“父”文档并关闭对话框。
当我在该函数中仅使用 alert() 语句进行测试时,它可以调用该函数,但是,当我尝试更新“父”文档时,它无法识别。
我试图传递“document1”对象,但是一旦我进入对话框,它就会说它不存在,所以链接失败了。
这是构建链接的代码片段:
// Let's build the row...
cell = document.createElement("td");
resultLink = document.createElement("a");
resultLink.setAttribute("class", "linkText");
resultLink.setAttribute("href", "#");
resultLink.setAttribute("onclick", "javascript:updateDocument(document1, '" + bpName + "', '" + bpEmail + "', '" + bpPhone + "', '" + bpTitle + "', '" + bpCountry + "', '" + bpLoc + "');");
resultLink.appendChild(document.createTextNode(bpName));
cell.appendChild(resultLink);
row.appendChild(cell);
如何在客户端获取 document1 对象的句柄,以便更新“父”文档上的这些字段并关闭对话框?
代码:
function updateDocument(doc, name, email, phone, job, country, location) {
var thisField;
// Need to update the document with the selected values...
thisField = doc.getElementById("#{id:sr_Name1}");
thisField.value = name;
thisField = doc.getElementById("#{id:sr_Title1}");
thisField.value = email;
thisField = doc.getElementById("#{id:sr_Phone1}");
thisField.value = phone;
thisField = doc.getElementById("#{id:sr_Email1}");
thisField.value = job;
thisField = doc.getElementById("#{id:sr_Location1}");
thisField.value = location + " - " + country;
}
谢谢!