1

デフォルトでは、要約列は、dataViewのpageNameプロパティで指定されているように、基になるドキュメントを開くためのリンクを追加します。アプリケーションをdataViewに保持し、「documentXPage」を開かないというユースケースがあります。

これは繰り返し実行できることはわかっていますが、アプリケーションで適切に機能するdataViewの他の部分/機能があるため、理想的には、summaryColumnのデフォルトの動作をオーバーライドすることを検討しています。

リンクの動作をオーバーライドするために、次のように、プロパティではなくファセットとして要約列を追加しました。

<xp:this.facets>
    <xp:panel xp:key="summary" id="summaryPanel">
        <xp:text escape="false" id="computedField3">
            <xp:this.value><![CDATA[#{javascript:
var custName = viewEntry.getColumnValue("Customer");
return "<h4>"+custName+"</h4>"}]]>
                   </xp:this.value>
        </xp:text>
    </xp:panel>
    <xp:panel xp:key="detail" id="detailsPanel" readonly="true">
            <xp:text escape="true" id="computedField1">
            <xp:this.value><![CDATA[{javascript:
viewEntry.getDocument().getItemValueString("Address") + ",      " +
viewEntry.getDocument().getItemValueString("City") + ", " +
viewEntry.getDocument().getItemValueString("State")}]]>
                    </xp:this.value>
            </xp:text>
   </xp:panel>
<\xp:this.facets>

クリックしたときに詳細ファセットを表示/非表示にするようにサマリーファセットをコーディングするにはどうすればよいですか?

4

2 に答える 2

2

設定のdetailsOnClientによって異なります。

これがtrueに設定されている場合、CSJSを使用して表示を「ブロック」または「なし」に設定でき、getComponent( "dataView1")を使用して変更する必要のある要素のIDを計算できるはずです。 .getRowIndex()(dataViewのIDがdataView1であると想定)

これは、detailsOnClientがfalseの場合に同じことを行うための鍵でもあります。次のコードが機能します。

var idex=getComponent("dataView1").getRowIndex();
getComponent("dataView1").toggleDetailVisible(@Text(idex+1));

基本的に、現在のrowIndex(0から始まる)のハンドルを取得し、1を追加して行を切り替え、テキストに変換します。DataViewコントロールには、トグルを実行するために使用されるメソッドtoggleDetailVisible(String)があります。

于 2012-09-25T12:12:54.333 に答える
1

Domino 9の@Mikaelが述べているように、toggleDetailVisible関数は機能していないようです。Brad Balassaitisからの提案に基づいて、twistieオブジェクトのハンドルを取得してクリックすることで、動作させることができました。

var myid = "#{id:link3}";
var parts = myid.split(":");
var outparts = [];
for(var idx=0; idx<parts.length-1; idx++){
    outparts[idx] = parts[idx];
}
outparts[outparts.length-1] += "_shimg";
var bid = outparts.join(":");

var btn = document.getElementById(bid);
btn.click();
于 2013-06-25T19:31:44.907 に答える