1

xpages データテーブルを使用して、セルの値に基づいて列内のセルのセルの色を異なるように設定しようとしています。私が見つけたのは、データテーブルがビューにバインドされ、コレクションが (行の値を取得するために) 指定されていますが、これはスタイル セクションでは利用できないようです。

次に例を示します。

<xp:dataTable id="dataTable8" rows="30" var="doc1">
    <xp:this.value><![CDATA[#{javascript:var View:NotesView = DivisionsView;
View.getAllEntriesByKey("ViewName")}]]></xp:this.value>
        <xp:column id="column1" style="width:75px;font-family:Tahoma">
        <xp:text escape="true" id="computedField1">
        <xp:this.value><![CDATA[#{javascript:doc1.getColumnValues()[1]
}]]></xp:this.value>
                <xp:this.style><![CDATA[#{javascript:v=doc1.getColumnValues()[1];
if(v=="Yes"){"background-color:rgb(255,0,0)"}}]]></xp:this.style>
        </xp:text>
        <xp:this.facets>
            <xp:label value="Header" id="label1" xp:key="header">
            </xp:label>
        </xp:this.facets>
    </xp:column>
</xp:dataTable>

これは、doc1 が見つからないというエラーを示しているだけです。これは、データテーブルにバインドされたデータがスタイル部分で利用できないことを意味しますか? これを行う方法はありますか?

任意の提案をいただければ幸いです!

編集: ビュー エントリの値に基づいてテーブル セルのスタイルを変更できません。これは、doc1 が見つからないというエラーをスローする例です。

<xp:column id="column1">
    <xp:this.style><![CDATA[#{javascript:v=doc1.getColumnValues()[1];
if(v=="Yes"){"background-color:rgb(255,0,0)"}}]]></xp:this.style>
    <xp:text escape="true" id="computedField1">
        <xp:this.value><![CDATA[#{javascript:doc1.getColumnValues()[1]
}]]></xp:this.value>
    </xp:text>
    <xp:this.facets>
        <xp:label value="Header" id="label1" xp:key="header">
        </xp:label>
    </xp:this.facets>
</xp:column>
4

3 に答える 3

1

スタイルシートプロパティは、列のすべての値に対してレンダリングされるだけでなく、行ごとに計算されます。これにはファセットも含まれます。

これは、列にヘッダーやフッターがある場合、これらの非表示の行に対してスタイルシートプロパティが計算されますが、行の値 ( doc1 ) がないことを意味します。

コードを変更して try/catch を追加すると、結果を確認できます。

<xp:column id="column1">
   <xp:this.style>
      <![CDATA[#{javascript:
         try{
            v=doc.getColumnValues()[1];
            if(v=="Yes"){"background-color:rgb(255,0,0)"}
         }catch(e){
            return "background-color:rgb(255,0,255)";
         }}]]>
    </xp:this.style>
   ...
   ...
</xp:column>
于 2013-07-24T11:31:49.357 に答える
0

コードで確認していただきたいことがいくつかあります。

最初にデータをバインドするコード:

var View:NotesView = DivisionsView;
View.getAllEntriesByKey("ViewName")

とはDivisionsView? バインドする実際のコードは次のようになります。

var View:NotesView = database.getView("ViewName");
View.getAllEntriesByKey("KeyName")

次に、スタイルを追加するコードで、条件=ではなく単一を使用しました。したがって、コードは次のようになります。==if

v = doc1.getColumnValues()[1];
if (v=="Yes") {
    "background-color:rgb(255,0,0)"
}

これらの提案は機能しますか?

于 2013-07-23T11:22:38.213 に答える