0

readonly プロパティが true の外部パネルがある場合、コンテンツを編集できる内部パネルを作成する方法はありますか?

ユース ケースは、多数のフィールドと複数の RoundedRectLists を持つモバイル ページです。これらのリストのコンテンツをフィルタリングするために、各 RoundedRectList に検索コントロールを追加したいと思います。フィールドを常に編集可能にしたくありません。フォーム全体を切り替えることなく検索値を入力できるように、検索コントロールを編集可能にする必要があります。現時点では、内側のパネルに readonly=false を設定していますが、外側のパネルの読み取り専用も false に設定されている場合にのみ、検索コントロールが編集可能になります。

ネストされていない別のパネルを作成できることはわかっていますが、ネストされたパネルのこの設計パターンは非常に一般的であり、これを解決した XPages の専門家が n 人いると確信しています...

4

1 に答える 1

0

私はあなたが探している XPage の第一人者ではありませんが、回避策があります =)

私の知る限り、外側のパネルを readonly="true" に設定すると、内側のすべての inputText ボックスは<inputField>、html に no を出力します<span>。入力のように見えるが、入力が無効になっているフィールドが必要な場合も、これは非常に面倒です。これは、todisabled="true"および showReadonlyAsDisabled="true" を設定すると実現されます。

すべての readonly="false" を設定し、dojo.query を使用して、ページの読み込み時に無効なプロパティを次のように設定することをお勧めします。

    <xp:scriptBlock>
        <xp:this.value><![CDATA[dojo.ready(function(){
        dojo.query(".input").forEach(function(node, index, array){  
          node.disabled = true;
         }
    )
});]]></xp:this.value>
    </xp:scriptBlock>

    <xp:panel>
            <xp:inputText id="inputText1" value="#{viewScope.in1}" styleClass="input"
                defaultValue="Txt0" >
            </xp:inputText>
            <xp:inputText id="inputText2" value="#{viewScope.in2}" styleClass="input"
                defaultValue="Txt1">
            </xp:inputText>
            <xp:inputText id="inputText3" value="#{viewScope.in3}" styleClass="input"
                defaultValue="Txt2">
            </xp:inputText>
    </xp:panel>

このソリューションのもう 1 つの利点は、サーバーを呼び出さずに clientSide で編集可能に設定できることです。それが役に立てば幸い。

于 2013-08-13T06:27:44.360 に答える