1

Extension Library と XPages を使用して、Web ベースのワークフロー アプリケーションを構築しています。機能の 1 つは、ダイアログを表示して、次の承認者を選択してから送信することです。

新しいドキュメントの場合、ダイアログが表示され、読み取りモードのときにも表示されます。保存されたドキュメントに対して開かれることはありません。ダイアログはCSJSで開きますが、SSJSで動作する必要があります。コードの一部を次に示します。

xpMain.xspccButtonsには、 との 2 つのカスタム コントロールが含まれていますccWFloDialogs

ccButtons 「送信」ボタン:

getComponent('dlgNextOwner').show();

ccWFloDialogs "dlgNextOwner" ダイアログ:

<xe:dialog id="dlgNextOwner" title="Select Supervisor">
    <xe:formTable id="ftDlgNextOwner" formTitle="Select Supervisor"
        formDescription="You may select a different supervisor."
        disableErrorSummary="true">
        <xp:this.facets>
            <xe:formRow id="formRow1" xp:key="footer" for="txtWFloNextOwner"
                labelWidth="125px">
                <xp:inputText id="txtWFloNextOwner" style="width:200px"
                    value="#{viewScope.nextOwner}">
                </xp:inputText>
                <xe:namePicker id="npNextOwner" dialogTitle="Select Supervisor"
                    for="txtWFloNextOwner">
                    <xe:this.dataProvider>
                        <xe:dominoNABNamePicker addressBookSel="all-public"></xe:dominoNABNamePicker>
                    </xe:this.dataProvider>
                </xe:namePicker>
            </xe:formRow>
        </xp:this.facets>
    </xe:formTable>
</xe:dialog>

CSJS では、次のコードを使用すると、ダイアログが正常に開きます。

XSP.openDialog("#{id:dlgNextOwner}");

拡張ライブラリの Mark Hughes のピックリストも使用しています。コントロールとデータ ソースを含むパネルを削除すると、SSJS にダイアログが表示されます。コードはカスタム コントロールにありますが、直接 XPage にある場合でも問題は同じです。パネルのコードは次のとおりです。

<xp:panel
        id="vendorDiv">
        <xp:this.data>
            <xp:dominoView
                var="nvVend"
                viewName="V_Vend"
                ignoreRequestParams="true"
                databaseName="other/lookupdb.nsf"
                startKeys="#{javascript:viewScope.srchVend}">
            </xp:dominoView>
        </xp:this.data>
        <xe:formTable
            id="ftGetVendor"
            disableErrorSummary="true"
            labelPosition="above">
            <xe:formRow
                id="frVendor"
                for="cfVendorName"
                label="Name of the Vendor:">
                <xp:text
                    escape="true"
                    id="cfVendorName"
                    value="#{currentDocument.VendorName}"
                    style="width:200px">
                </xp:text>
                <xc:viewpicklist
                    rowsPerPage="15"
                    buttonImage="./add.png"
                    tableClass="tablecellgreen"
                    headerClass="headerclass"
                    rowClass="odd, even"
                    searchBar="false"
                    searchButtonText="Search"
                    searchButtonClass="button2"
                    searchBarClass="headerclass"
                    pagerStyleFirst="navbutton1"
                    pagerStylePrevious="navbutton2"
                    pagerStyleCurrent="navbutton4"
                    pagerStyleNext="navbutton2"
                    pagerStyleLast="navbutton3"
                    typeAheadBar="true"
                    select="Column"
                    onReturn="Set Scope Value"
                    bottomBarClass="bottomround headerclass"
                    cancelButtonText="Cancel"
                    cancelButtonClass="button2 floatthisright"
                    type="Single Value"
                    finishButtonText="Finish"
                    finishButtonClass="button2 floatthisright"
                    multiSelectButtonAddImg="./add.png"
                    multiSelectButtonRemoveImg="./delete.png"
                    picklistButtonClass="button"
                    openDialogWith="Link"
                    picklistLinkImg="./add.png"
                    multiSelectLinkAddImg="./add.png"
                    multiSelectLinkRemoveImg="./delete.png"
                    selectWith="Link"
                    clearSearchImg="./cross.png"
                    SelectCellWidth="30px"
                    dialogID="dlgVend"
                    dialogTitle="Select a Vendor"
                    dialogWidth="80%"
                    refreshID="vendorDiv"
                    ssjsSelectFunction="getVendorInfo"
                    varName="viewScope.vendorInfo"
                    datasrc="nvVend"
                    selectColumn="4"
                    linkImg="./add.png"
                    typeAheadVar="viewScope.srchVend">
                    <xc:this.viewColumn>
                        <xp:value>0</xp:value>
                        <xp:value>1</xp:value>
                        <xp:value>2</xp:value>
                        <xp:value>3</xp:value>
                    </xc:this.viewColumn>
                </xc:viewpicklist>
            </xe:formRow>
            <xe:formRow
                id="frVendorStatus"
                for="cfVendorStatus"
                label="Vendor Registration Status:">
                <xp:text
                    escape="true"
                    id="cfVendorStatus"
                    value="#{currentDocument.VendorStatus}">
                </xp:text>
            </xe:formRow>
            <xe:formRow
                id="frVendorCountry"
                for="cfVendorCountry"
                label="Country Name:">
                <xp:text
                    escape="true"
                    id="cfVendorCountry"
                    value="#{currentDocument.VendorCountry}">
                </xp:text>
            </xe:formRow>
        </xe:formTable>
    </xp:panel>

要求されたベンダー情報は、問題やエラーなしでフィールドに入力されます。ただし、ここに何かがあり、SSJS を使用してダイアログを開くのを妨げているようです。

誰かが私が行方不明になっている明らかなものを見ることができますか? データ ソースはパネルにあり、ignoreRequestParams は true です (そうでない場合は機能しません)。

主なデータ ソースは XPage コンテキスト全体にあります。メイン パネルの外に ccWFloDialog カスタム コントロールを追加し、データ ソースをパネルに変更しようとしましたが、うまくいきませんでした。

何か案は?

4

2 に答える 2

2

今のところダイアログを忘れてください。これはおそらくデータ ソースに関連しています。最初に xpage だけで動作させることをお勧めします。見えるフィールド付き。次に、レンダリングされたプロパティを使用して、ダイアログが表示されるのと同じように xpage で動作させることができます。それが機能したら、ダイアログに適用するのに適しているはずです。このアイデアは、ダイアログが正常に機能することを確認するために、まず方程式からダイアログを取り除くことです。

于 2013-03-12T14:21:57.073 に答える
0

代わりに、SSJS の代わりに CSJS を使用してダイアログを開くことにしました。いくつかのロジックを変更しました。プロジェクトのこの部分を完了するために、もう少しやるべきことがあります。ありがとうございます!

于 2013-03-12T16:11:31.367 に答える