使用xpage中的对话框而不使用extlib或dojo

时间:2013-03-06 11:38:00

标签: xpages

我是xpages的新手,我正试图让一个表单显示在一个对话框中

这需要在撰写新表单并从视图中打开一个表单时起作用

我在表单/对话框的自定义控件中有以下代码

<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
    <xp:dominoDocument var="document1" formName="fa_alert"></xp:dominoDocument>
</xp:this.data>
<xp:panel styleClass="lotusOverlay"></xp:panel>
<xp:panel styleClass="lotusDialogWrapper" id="dialog">
    <xp:panel styleClass="lotusDialogBorder">
        <xp:form styleClass="lotusDialog lotusForm2">
            <h2>
                <xp:link value="javascript:;" styleClass="lotusBtnImg lotusClose" title="close dialog">
                    <span class="lotusAltText">X</span>
                </xp:link>
                Service Outage
            </h2>
            <xp:panel styleClass="lotusDialogContent">
                <xp:panel styleClass="lotusFormBody">
                    <xp:panel styleClass="lotusFormField">
                        <label for="title">
                            <span class="lotusFormRequired">*</span>
                            Title:
                        </label>
                        <xp:panel>
                            <xp:inputText styleClass="lotusText" id="title" value="#{document1.fd_AlertSummary}"></xp:inputText>
                        </xp:panel>
                    </xp:panel>
                    <xp:panel styleClass="lotusFormField">
                        <label for="description">
                            <span class="lotusFormRequired">*</span>
                            Description:
                        </label>
                        <xp:panel>
                            <xp:inputTextarea styleClass="lotusText" id="description" rows="10" cols="20" value="#{document1.fd_AlertDescription}"></xp:inputTextarea>
                        </xp:panel>
                    </xp:panel>
                    <xp:panel styleClass="lotusFormField">
                        <label for="sites">
                            <span class="lotusFormRequired">*</span>
                            Site(s) Affected:
                        </label>
                        <xp:panel>
                            <xp:checkBoxGroup styleClass="lotusCheckbox" id="sites" value="#{document1.fd_kw_Sites}" layout="pageDirection"
                                style="width:200px">
                                <xp:selectItems>
                                    <xp:this.value><![CDATA[#{javascript:@DbColumn("","KeywordLookup",3)}]]></xp:this.value>
                                </xp:selectItems>
                            </xp:checkBoxGroup>
                        </xp:panel>
                    </xp:panel>
                    <xp:panel styleClass="lotusFormField">
                        <label for="outagedate">
                            <span class="lotusFormRequired">*</span>
                            Outage Date:
                        </label>
                        <xp:panel>
                            <xp:inputText styleClass="" id="outagedate" value="#{document1.fd_dt_DOS}">
                                <xp:dateTimeHelper id="dateTimeHelper1"></xp:dateTimeHelper>
                                <xp:this.converter>
                                    <xp:convertDateTime type="date" dateStyle="short"></xp:convertDateTime>
                                </xp:this.converter>
                            </xp:inputText>
                        </xp:panel>
                    </xp:panel>
                </xp:panel>
            </xp:panel>
            <xp:panel styleClass="lotusDialogFooter">
                <xp:button value="Edit" id="button1">
                    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                        <xp:this.action>
                            <xp:changeDocumentMode mode="edit"></xp:changeDocumentMode>
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
                <xp:button value="Save" id="button2">
                    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                        <xp:this.action>
                            <xp:actionGroup>
                                <xp:saveDocument></xp:saveDocument>
                                <xp:openPage name="/Home.xsp"></xp:openPage>
                            </xp:actionGroup>
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
                <xp:button value="Cancel" id="button3">
                    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                        <xp:this.action>
                            <xp:openPage name="/Home.xsp"></xp:openPage>
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
            </xp:panel>
        </xp:form>
    </xp:panel>
</xp:panel>

但是在尝试创建新表单或打开现有表单时,只会显示空白页?

如果我登录firefox我的代码就在那里,但没有显示任何内容!!

有人可以帮助像我这样的新手了解我做错了吗?

我最初遵循oneuiv2.1文档,而现在已经遵循社区中其他人的建议并使用dojo dijit.dialog而不是它会起作用,尽管它会引发错误

  

更新某些页面时发生错误。      尝试使用id == view注册widget:_id1:_id47:_id49:dialog但该id已经注册

我假设这意味着我已经在其他地方引用了对话框ID,现在只需要找到..或者我误解了错误!因为我昨天做了很多改变,试图让事情发挥作用......可能是时候回溯一下我的步骤了!

3 个答案:

答案 0 :(得分:3)

您无需添加自己的xp:form标记。 XPages会为您执行此操作(除非您将createForm上的xp:view设置为false)。所以尝试删除它,看看是否有帮助。

答案 1 :(得分:0)

虽然我没有验证它,但我认为类lotusdialog ***有一个显示:无。请在浏览器中使用Web Developer,Firebug或Developer Tools进行检查。 如果是这样,那么虽然源可用,但不显示任何内容。您必须在onClientLoad Client JS事件中使用javascript切换元素,例如

document.getElementById('#{id:dialog}')。style.display =“block”

答案 2 :(得分:-2)

需要更多文档阅读