1

Xpageに、読み取り専用にして保存時にデータベースに送信するフィールドがあります。このフィールドはAjax呼び出しから値を取得します

プロパティReadOnlyをtrueに設定する<span>と、読み取り専用フィールドの代わりに作成されます。

プロパティ「読み取り専用の無効な制御を表示」を設定すると、プロパティreadonly=readonlyを使用して入力テキストフィールドが作成されます。

<input type="text" class="xspInputFieldEditBox" readonly="readonly" name="view:_id1:_id2:_id3:_id28:callbackFieldControlSet:InstrumentShort" id="view:_id1:_id2:_id3:_id28:callbackFieldControlSet:InstrumentShort">

データベースには保存されません。

私の知識によると、読み取り専用フィールドは送信されますが、無効にはなりません。

私はここで何を間違っているのですか?

/ M

4

2 に答える 2

5

attr-propertyを使用して読み取り専用属性を追加できます。

<xp:inputText id="inputText2" value="#{document1.ReadOnly}">
   <xp:this.attrs>
      <xp:attr name="readonly" value="true" />
   </xp:this.attrs>
</xp:inputText>

ところで:これはサーバー側の定義であるため、 disabledおよびreadonlyプロパティの動作は正しいです。値を使用してコンポーネントを編集する必要があるため、値の受け入れを許可する必要があります。クライアント側で無効にするだけでは、技術的には効果がありません。

于 2013-02-01T08:42:05.237 に答える
0

これはバグだと思います。そうです、読み取り専用フィールドが保存されるはずですバージョン8.5.1では、「読み取り専用の無効な制御を表示する」プロパティが存在しなかったときに、JavaScriptを使用してフィールドを読み取り専用として設定していました。コードスニペットは次のとおりです。

<xp:scriptBlock id="scriptBlock1">
    <xp:this.value><![CDATA[function makeFieldReadOnly() {
    document.getElementById("#{id:inputText2}").readOnly = true;
}
window.onload = makeFieldReadOnly;]]></xp:this.value>
</xp:scriptBlock>

上記のスニペットでは、関数はページが読み込まれたときにmakeFieldReadOnly編集ボックスinputText2を読み取り専用としてマークします。

于 2013-02-01T03:22:04.503 に答える