我的 XPage 上有一个通过按钮打开的扩展库对话框控件:
XSP.openDialog("#{id:commentsDialog}");
在我的 XPage 上,我有一个名为 document1 的文档源。当我将这些字段(从 Data Palette 拖放)放在对话框控件上时,字段 (docID) 存在,但不可编辑——看起来为显示计算:
<xe:dialog id="commentsDialog" title="Comments" styleClass="dialogBoxComments">
<xp:panel>
<xp:table style="width:100%">
<xp:tr>
<xp:td>
<xp:label value="Enter your comments..." id="label2"></xp:label>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputTextarea id="comments" style="width:100%;height:100px">
</xp:inputTextarea>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:div style="text-align:right">
<xp:button value="Submit" id="submitButton">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:saveComments();}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button id="cancelButton" value="Cancel">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[XSP.closeDialog("#{id:commentsDialog}");]]></xp:this.script>
</xp:eventHandler>
</xp:button>
</xp:div>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText value="#{document1.docID}" rendered="false"
id="docID"></xp:inputText>
</xp:td>
</xp:tr>
</xp:table>
</xp:panel>
<xp:br></xp:br>
</xe:dialog>
我有一个输入文本区域,用户将在其中输入值,但我无法使用 SSJS 获取该值。我试过了:
function getComponentValue(id){
var field = getComponent(id);
var value = field.getSubmittedValue();
if( null == value ){
// else not yet submitted
value = field.getValue();
}
return value
}
要获取输入文本区域中的值,我不确定该怎么做,因为如果我绑定到 Data Palette 中的现有字段,它看起来不可编辑并且我无法输入任何值。
此外,我在调用一些 SSJS 的对话框控件上有一个提交按钮:
function saveComments() {
// Need to create a comments doc for the movie...
var db:NotesDatabase = session.getCurrentDatabase();
var doc:NotesDocument = currentDocument.getDocument();
var unid = getComponentValue("docID");
// Grab comments from dialog...
var comments = getComponentValue("comments");
// Create the comments doc...
var docComm:NotesDocument = db.createDocument();
docComm.replaceItemValue("Form", "comment");
var nowValue = @Text(@Now());
var currentUser = sessionScope.get("currentUser");
docComm.replaceItemValue("cm_Key", unid);
docComm.replaceItemValue("cm_By", currentUser);
docComm.replaceItemValue("cm_Date", nowValue);
docComm.replaceItemValue("cm_Key", unid);
docComm.save();
}
我将如何从服务器端关闭对话框?
所以,三件事(感谢你的耐心):
- 如何使对话框控件上的字段可编辑
- 如何从未绑定到文档1上的字段的输入文本区域中获取值
- 如何从服务器端关闭对话框
谢谢!
编辑:我在此评论中进行了编辑,以便我可以正确显示图像...
- 我使 docID 字段可见,它看起来是经过计算的,不可编辑。
- 我添加了第二个文档数据源(commentDocument)并将字段的值设置为数据调色板值——字段不出现,认为它可能是不可编辑的。
这是图像 - 绿色框是注释字段(来自 commentsDocument 源的 cm_Comm)应该存在的位置,红色框是不可编辑的 docID 字段:
现在是控件背后的代码:
<xe:dialog id="commentsDialog" title="Comments" styleClass="dialogBoxComments">
<xp:panel>
<xp:table style="width:100%">
<xp:tr>
<xp:td>
<xp:label value="Enter your comments..." id="label2"></xp:label>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputTextarea id="comments" style="width:100%;height:100px"
value="#{commentDocument.cm_Comm}">
</xp:inputTextarea>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:div style="text-align:right">
<xp:button value="Submit" id="submitButton">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:saveComments();getComponent("commentsDialog").hide();}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button id="cancelButton" value="Cancel">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[XSP.closeDialog("#{id:commentsDialog}");]]></xp:this.script>
</xp:eventHandler>
</xp:button>
</xp:div>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText value="#{document1.docID}" id="docID"></xp:inputText>
</xp:td>
</xp:tr>
</xp:table>
</xp:panel>
<xp:br></xp:br>
</xe:dialog>
请让我知道我在做什么不正确-感谢!