0

<xp:viewColumn>ドキュメントをロックする目的で使用されるカスタム コントロールに があります。ビュー パネルの行データ変数をカスタム プロパティとしてカスタム コントロールに渡す必要があります。

カスタム コントロールの新しいプロパティを次のように定義しました。

名前: 行エントリ

タイプ: com.ibm.xsp.model.ViewRowData

ccColDocLockingこれは、ビュー パネル内の例です。すべてのビュー パネルで同じ var を使用すると問題なく動作しますが、ハード コードしたくありません。

    <xp:viewPanel rows="15" id="viewPanel1" viewStyle="width:100%"
            rowClasses="even,odd" var="rowData">        
       <xp:this.data>
            <xp:dominoView viewName="IntakeForms" var="view1"></xp:dominoView>
       </xp:this.data>
       <xc:ccColDocLocking rowEntry="#{javascript:rowData}"></xc:ccColDocLocking>
       <xp:viewColumn columnName="reqDate" id="viewColumn1"
            displayAs="link" openDocAsReadonly="true">
            <xp:this.converter>
                <xp:convertDateTime pattern="MM/dd/yyyy"></xp:convertDateTime>
            </xp:this.converter>
            <xp:viewColumnHeader value="Request  Date"
                id="viewColumnHeader1" sortable="true">
         </xp:viewColumnHeader>
        </xp:viewColumn>
 </xp:view>

これは私のカスタムコントロールからのものです:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">    
    <xp:viewColumn id="viewColDocLock">
        <xp:this.facets>
            <xp:viewColumnHeader xp:key="header" id="viewColumnHeader5">
            </xp:viewColumnHeader>
        </xp:this.facets>
        <xp:this.value><![CDATA[#{javascript:""}]]></xp:this.value>
        <xp:image id="imgDocLock">
            <xp:this.url><![CDATA[#{javascript:if (rowData.getDocument().hasItem("$Writers") != "") {
    return "/locked.gif";
}}]]></xp:this.url>
            <xp:this.alt><![CDATA[#{javascript:"Document locked by " + @Name('[Abbreviate]', rowData.getDocument().getItemValueString("$Writers"))}]]></xp:this.alt>
            <xp:this.title><![CDATA[#{javascript:"Document locked by " + @Name('[Abbreviate]', rowData.getDocument().getItemValueString("$Writers"))}]]></xp:this.title>
        </xp:image>
    </xp:viewColumn>
</xp:view>

私が得ているエラーは次のとおりです:[ReferenceError] 'compositeData'が見つかりません

に置き換えようとするrowData.getDocument()compositeData.rowEntry.getDocument()

4

3 に答える 3

4

データソースを compositeData として繰り返しに渡す場合は、ページの読み込み時に利用できる必要があります。デフォルトでは、繰り返しのフレームワークはページの読み込み時に作成されますが、データ固有のコンテンツは実行時に計算されます。これの証拠は、繰り返しのバインディングで ${datasourceName.fieldName} を使用できず、#{datasourceName.fieldName} のみを使用できることです。

必要なことを行うには、繰り返しに repeatControls="true" を設定する必要があります。これは、「ページの読み込み時に、このコレクションの x 行を使用して繰り返しのコンテンツを作成する」ことを示しています。次に、データソースを渡すことができます。

ただし、行とデータはページの読み込み時に書き込まれるため、部分的な更新によって内容が変更されることはありません。ページャーなどは使用できません。ページ読み込み時に繰り返しに書き込まれるデータに制限されます。

それがうまくいかない場合は、UNID などのカスタム コントロールに文字列参照を渡し、関連するデータ ソースを取得するカスタム コントロールにデータ ソースを追加する必要があります。

于 2012-11-02T13:35:53.980 に答える
2

これは、LotusNotesおよびDominoアプリケーション開発wikiで役立ちます。

カスタムコントロールの場合:

<xp:this.beforePageLoad>
<![CDATA[#{javascript:this.setAutoRemove(false);}]]>
</xp:this.beforePageLoad>

ソース/詳細説明: http ://www-10.lotus.com/ldd/ddwiki.nsf/dx/XPages_compositeData_not_found

于 2012-11-01T06:36:03.663 に答える