拡張ライブラリのダイアログコントロールを備えたXPageがあります。
ダイアログは正常に機能します-開き、必要な処理を実行しますが、「親」ドキュメントを更新しようとすると機能しません。
XPageデータソースはdocument1というDominoドキュメントです。読んだ後にこれを追加しました: 拡張ライブラリダイアログボックスからドキュメントを保存すると、一部の値が空白になります
<xp:this.data>
<xp:dominoDocument var="document1" formName="speakerReq"></xp:dominoDocument
</xp:this.data>
ダイアログコントロールには、サーブレットを呼び出し、解析されて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;
}
ありがとう!