2

XPagesの拡張ライブラリの名前ピッカーを使用しており、結果を複数行の編集ボックスに配置しています。

エンドユーザーが名前ピッカー以外で選択した名前を編集できないように、編集ボックスを読み取り専用にするにはどうすればよいですか?

読み取り専用プロパティを設定しようとしましたが、コントロールも非表示になります。

また、結果を非表示フィールドに配置し、区切り文字として改行を使用して計算フィールドに結果を表示しようとしましたが、ターゲットコントロールを非表示にすると、コントロールも非表示になります。

4

5 に答える 5

4

namePicker を Extension Library の djextNameTextBox コントロールと組み合わせることができます。このコントロールは、ユーザーが名前を削除することのみを許可します (編集はできません)。

<xe:djextNameTextBox id="testField" value="#{document.TestField}"></xe:djextNameTextBox>
<xe:namePicker id="namePicker1" for="testField" dialogTitle="Pick a name">
    <xe:this.dataProvider>
        <xe:dominoNABNamePicker addressBookSel="all-public" nameList="people"></xe:dominoNABNamePicker>
    </xe:this.dataProvider>
</xe:namePicker>

djextNameTextBox の代わりに編集ボックスを使用したい場合は、その外観のために理解しています。その場合は、少しのカスタム CSS が役立つ可能性があります :-)

于 2013-02-14T19:08:16.213 に答える
2

maxlength プロパティを使用します。これにより、人々がフィールドに直接入力するのを防ぐことができます

<xp:inputText id="inputText1"
value="#{viewScope.adminOwner_Tx}" maxlength="0"
style="width:300px">
</xp:inputText>
于 2013-03-29T20:40:50.803 に答える
1

回答ありがとうございます。こことXPagesLotusForumでいくつかの回答を少し使用しました。

  1. dojo Names PIckerを作成し、Approversというテキストコントロールにポイントして、ApproversControlでMultipleSeparatorを「、」に設定しました。
  2. ApproversDisplayと呼ばれる複数行のテキストボックスを追加します。これを読み取り専用に設定し、データオブジェクトとデフォルト値の

    var Rel = getComponent('Approvers').getValue();
    return @Implode(Rel,"\n")
    

    これは、各値を新しい行で区切ります。

  3. ApproverDisplayで部分更新を実行するようにApproversコントロールでonchangeイベントを設定します。
  4. ソースで、スタイルプロパティdisplay:noneを設定しました。これは、visibleプロパティのようにNamePickerを非表示にしません。

私はXPagesにかなり慣れていないので、もっと良い方法があると考える人もいるかもしれませんが、実際に数えたいよりも多くの時間が経過すると、うまくいきます!

于 2013-02-17T19:37:32.257 に答える
1

<xp:hidden>非表示フィールドと計算フィールドを使用して回避策を使用します。これについては、ブログhttp://naveegator.blogspot.com/2012/06/displaying-common-names-of-user-with.htmlで説明しました。

以下はコード スニペットです。

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
    <xe:namePicker id="npUserNames" for="hdnUserNames">
        <xe:this.dataProvider>
            <xe:dominoNABNamePicker addressBookDb="names.nsf"></xe:dominoNABNamePicker>
        </xe:this.dataProvider>
    </xe:namePicker>
    <xp:inputHidden id="hdnUserNames" multipleTrim="true">
        <xp:this.multipleSeparator><![CDATA[#{javascript:","}]]></xp:this.multipleSeparator>
        <xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="cfUserNames"></xp:eventHandler>
    </xp:inputHidden>
    <xp:text escape="true" id="cfUserNames">
        <xp:this.value><![CDATA[#{javascript:@Name("[CN]", getComponent("hdnUserNames").getValue())}]]></xp:this.value>
    </xp:text>
</xp:view>

読み取り専用フィールドを作成する方法については、この質問「 Xpage の ReadOnly フィールドが送信されていません」で Sven の回答を調べることもできます。

于 2013-02-14T17:16:54.943 に答える