2017-07-21 4 views
0

で作業することはできません。カスタムコントロールは、1つのカスタムプロパティにrowDataを参照してください、私はカスタムコントロール以下のいる

<xp:repeat id="repeat1" rows="30" value="#{view1}" 
        var="repEntry" indexVar="index" repeatControls="false"> 
        <xp:panel> 
         <xp:this.data> 
          <xp:dominoDocument var="doc" 
           action="openDocument" 
           documentId="#{javascript:repEntry.getNoteID()}" 
           ignoreRequestParams="true"> 
          </xp:dominoDocument> 
         </xp:this.data> 
         <xc:ccSectionPanel initClosed="false" 
          panel_class="#{javascript:repEntry.getColumnValue('class')}" 
          footer="#{javascript:sessionScope.isAdmin}" 
          rendered="#{javascript:repEntry.getColumnValue('Status') == '1' || sessionScope.isAdmin}"> 
          <xc:this.titleBarText><![CDATA[#{javascript:repEntry.getColumnValue('Title') + (repEntry.getColumnValue('Status') != '1' ? ' (скрыто)' : '') 

}]]></xc:this.titleBarText> 
          <xp:this.facets> 
           <xp:panel xp:key="panelFooter"> 

            <xp:button value="Редактировать" 
             id="button2" styleClass="btn btn-xs"> 
             <i 
              class="glyphicon glyphicon-pencil"> 
             </i> 
             <xp:eventHandler event="onclick" 
              submit="true" refreshMode="complete"> 
              <xp:this.action> 
               <xp:openPage 
                name="/index.xsp" target="editDocument" 
                documentId="#{javascript:repEntry.getNoteID()}"> 
               </xp:openPage> 
              </xp:this.action> 
             </xp:eventHandler> 
            </xp:button> 
            <xp:button 
             value="#{javascript:repEntry.getColumnValue('Status') != '1' ? 'Показать' : 'Скрыть'}" 
             id="button3" styleClass="#{javascript:'btn btn-xs'}"> 
             <i 
              class="#{javascript:repEntry.getColumnValue('Status') != '1' ? 'glyphicon glyphicon-eye-open' : 'glyphicon glyphicon-eye-close'}"> 
             </i> 
             <xp:eventHandler event="onclick" 
              submit="true" refreshMode="partial" disableValidators="true" 
              refreshId="content"> 
              <xp:this.action><![CDATA[#{javascript:if (repEntry.getColumnValue('Status') == '1') { 
    doc.replaceItemValue('Status','0'); 
    doc.replaceItemValue('Author',sessionScope.User.UserName); 
    doc.save(); 
} else { 
    doc.replaceItemValue('Status','1'); 
    doc.replaceItemValue('Author',sessionScope.User.UserName); 
    doc.save(); 
}}]]></xp:this.action> 
             </xp:eventHandler> 
            </xp:button> 
            <xp:text escape="false" 
             id="computedField2" styleClass="btn btn-xs"> 
             <xp:this.value><![CDATA[#{javascript:'<i class="glyphicon glyphicon-user"></i>' + repEntry.getColumnValue('Author') + ' <i class="glyphicon glyphicon-time"></i>' + repEntry.getColumnValue('$1') 
}]]></xp:this.value> 
            </xp:text> 
           </xp:panel> 
           <xp:panel xp:key="panelBody"> 
            <!-- <xp:this.data> 
             <xp:dominoDocument var="doc" action="openDocument" 
             documentId="#{javascript:repEntry.getNoteID()}" 
             ignoreRequestParams="true"> 
             </xp:dominoDocument> 
             </xp:this.data> --> 
            <xp:inputRichText 
             id="inputRichText2" value="#{doc.Body}" readonly="true" 
             rendered="false"> 
            </xp:inputRichText> 
            <xp:text escape="false" 
             id="computedField1"> 
             <xp:this.value><![CDATA[#{javascript:doc.getDocument().getFirstItem("Body").getMIMEEntity().getContentAsText(); }]]></xp:this.value> 
            </xp:text> 


           </xp:panel> 
          </xp:this.facets> 
         </xc:ccSectionPanel> 
        </xp:panel> 
       </xp:repeat> 

:私は繰り返し制御で使用

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:this.beforePageLoad><![CDATA[#{javascript:compositeData.id = this.getId(); 
if (!compositeData.body_class) {compositeData.body_class='panel-body'}; 
if (!compositeData.panel_id) {compositeData.panel_id='section'+compositeData.id};}]]></xp:this.beforePageLoad> 
    <xp:panel> 
     <xp:this.styleClass><![CDATA[#{javascript:"ccSectionPanel panel " + compositeData.panel_class + ""}]]></xp:this.styleClass> 
      <xp:this.attrs> 
       <xp:attr name="id"> 
        <xp:this.value><![CDATA[#{javascript:compositeData.panel_id}]]></xp:this.value> 
       </xp:attr> 
      </xp:this.attrs> 
     <xp:panel styleClass="panel-heading" style="cursor:pointer;"> 
      <xp:this.attrs> 
       <xp:attr name="id"> 
        <xp:this.value><![CDATA[#{javascript:compositeData.panel_id + "_heading"}]]></xp:this.value> 
       </xp:attr> 
       <xp:attr name="href"> 
        <xp:this.value><![CDATA[#{javascript:"#" + compositeData.panel_id + "_section"}]]></xp:this.value> 
       </xp:attr> 
       <xp:attr name="data-toggle" value="collapse"></xp:attr> 
      </xp:this.attrs> 


      <xp:link escape="true" styleClass="panel-title" 
       text="#{javascript:compositeData.titleBarText}"> 
       <xp:this.attrs> 
        <xp:attr name="id"> 
         <xp:this.value><![CDATA[#{javascript:compositeData.panel_id + "_title"}]]></xp:this.value> 
        </xp:attr> 
       </xp:this.attrs> 
       <xp:this.id><![CDATA[${javascript:compositeData.panel_id + "_title"}]]></xp:this.id> 
      </xp:link> 
     </xp:panel> 

     <xp:panel> 
      <xp:this.styleClass><![CDATA[#{javascript:"panel-collapse collapse" + (compositeData.initClosed ? "" : " in")}]]></xp:this.styleClass> 
      <xp:this.attrs> 
       <xp:attr name="id"> 
        <xp:this.value><![CDATA[#{javascript:compositeData.panel_id + "_section"}]]></xp:this.value> 
       </xp:attr> 
      </xp:this.attrs> 
      <xp:panel 
       styleClass="#{javascript:compositeData.body_class}"> 
       <xp:callback facetName="panelBody" id="panelBody"></xp:callback> 
      </xp:panel> 
      <xp:panel rendered="#{javascript:compositeData.footer}" 
       styleClass="panel-footer"> 
       <xp:callback facetName="panelFooter" id="panelFooter"></xp:callback> 
      </xp:panel> 
     </xp:panel> 
    </xp:panel> 
</xp:view> 

私は孤立したプロパティを設定します。 (picture) これは機能しますが、panelEnitをrepEntryまたはdocに関連する何かに設定すると、エラーが発生します(repEntryは未定義です)。私は "ページ作成時にコントロールを作成する"を設定することができますが、部分リフレッシュの利点を失います。

主な質問は、1つのcostomプロパティがrepEntryで動作するのはなぜですか?他のものはできません。

+0

「panel_id」はどのようなプロパティタイプですか?どの値をプロパティ "panel_id"に設定しましたか? –

+0

文字列と文字列。問題は、行変数を使用できない理由ですが、他の変数は使用できます。 – Antiokh

+0

値を設定しようとしました: 1. repEntry.getPosition( '。'); 2. repEntry.getUniversalID(); 3. doc.getNoteId(); docは未定義ですが、repEntryは未定義です – Antiokh

答えて

0

答えは、プロパティが計算されるまでになります。それを計算し、SSJSコードでprintステートメントを追加すると、表示されます。 IDは、コンポーネントがロードされるときに計算される必要があります。したがって、処理の初期段階でIDを計算する必要があります。そして、最も重要なのは、コレクションがまだ構築されていないため、特定の行エントリに関連付けられていない単一の抽象コンポーネントセットが生成されていることです。抽象クラスを作成する前に抽象クラスを作成するようにしてください。

+0

printステートメントもエラー – Antiokh

+1

をスローします。デバッグできず、処理の順序を表示したい場合は、 'print(" Computing ID ");'次にrepeat()に 'print(" Repeat values ");'のようなものを追加します。それは処理の順序と、値を反復する前にIDを計算しようとしているかどうかを示します。このTLCCウェブセミナー(https://www.youtube.com/watch?v=t7j_MR5uzCA&feature=youtu.be)で詳しく説明しています。 –

関連する問題