ページの先頭行へ戻る
Interstage Interaction Manager V10 Ajaxフレームワーク UI部品リファレンス
Interstage

2.1.13 SelectList

SelectListは、単一選択および複数選択が可能なリストを表示する部品です。

示例

述形式

<div rcf:type="SelectList" ... ></div>

注意

子要素は指定できません。詳細は、「5.1.4 子要素を持たない部品に子要素を記述した場合の動作」を参照してください。

ポイント

本部品は前後に改行コードが挿入されて表示されます。

ロパティ

表の項目の意味は、「Text」の「プロパティ」を参照してください。

名前

データ型

説明

省略

省略値

属性指定

更新

部分更新

options

Array

選択項目を表す値のリストを指定します。
表示されるラベルは、labelProviderプロパティの指定に従います。

[]

値、バインド(注3)

labelProvider

getLabel関数を持つオブジェクト

各選択項目の文字列を確定する関数を指定します。options配列のメンバに応じた文字列変換ロジックを定義します。getLabel関数には、options配列の個々の要素が渡されます。
nullを指定した場合、デフォルトlabelProviderが使用されます。詳細は、「デフォルトlabelProvider」を参照してください。
以下の場合はエラーとなります。

  • nullおよびObject以外の値が指定された場合

  • getLabel関数を持たないObjectが指定された場合

null(デフォルトlabelProvider)

不可

不可

multiple

Boolean

複数選択または単一選択を指定します。

  • true:複数選択

  • false:単一選択

false

不可

不可

selectedIndex

Number

単一選択(multiple=false)の場合

  • 選択されている項目のインデックス(先頭は0)を指定します。

  • 選択状態の初期値を指定できます。

  • -1を指定した場合は、選択が解除されます。

  • 無効な値を指定した場合は、エラー(RCF13302)となります。

複数選択(multiple=true)の場合

optionsプロパティの値が変更された場合、本プロパティは-1(選択なし)に設定されます。

-1

値、バインド

可(注1)

不可

selectedIndexes

NumberのArray

選択されている項目のインデックス(先頭は0)配列を指定します。
選択順にインデックスが格納されます。
このプロパティにより選択状態の初期値を指定できます。
何も選択されていない場合は、長さ0の配列となります。
無効な値が指定された場合は、エラー(RCF13302)となります。
単一選択(multiple=false)の場合、部品の初期化後に本プロパティを変更しようとするとエラー(RCF11002)となります。「multipleとselectedIndex、selectedIndexesの関係について」を参照してください。
optionsプロパティの値が変更された場合、本プロパティは長さ0の配列(選択なし)に設定されます。

[]

値、バインド

可(注2)

可(注2)

title

String

optionsプロパティがStringまたはObjectの配列で、かつ各Objectがtitle属性でない場合、ツールチップで表示されるテキストを指定します。
なお、optionsプロパティがObjectの配列で、かつObjectがtitle属性の場合は、その値がツールチップとして表示されます。

""

不可

enabled

Boolean

本部品の有効/無効を指定します。

  • true:有効

  • false:無効
    操作できなくなりイベントも発生しません。

true

値、バインド

不可

tabIndex

Number

Tabキーで移動するフォーカスの順番を指定します。
HTMLのtabindex属性と同様の指定ができます。1以上の整数を指定した場合、数字の小さい順にフォーカスが移動します。
FocusManagerによるフォーカス移動には関係しません。

0

不可

renderer

render関数を持つオブジェクト

ラベルや項目のインデックスを入力値として各項目の表示用ノードを出力する関数を指定します。
nullが指定された場合には、ラベルの値をそのまま表示します。
以下の場合は、エラー(RCF13303)となります。

  • nullおよびObject以外の値が指定された場合

  • render関数を持たないObjectが指定された場合

null

不可

不可

注1) 単一選択(multiple=false)の場合にだけ更新可能
注2) 複数選択(multiple=true)の場合にだけ更新可能
注3) Objectの配列の場合は、バインディング式だけ記述可能

部品共通のプロパティも指定できます。詳細は、「2.8.1 画面部品共通プロパティ」を参照してください。

注意

titleプロパティに長い文字列を指定すると、自動的に改行または省略されることがあります。
また、発生位置はブラウザにより異なります。

なお、空文字列を指定した場合は、表示されません。

ポイント

  • 単一選択の場合

    • 常に1つだけ選択されている状態です。初期値は、selectedIndexプロパティで指定します。指定がない場合、一番上の項目が選択された状態となります。

    • マウスをクリックして、選択項目を変更できます。

    • ↑↓カーソルキーで、選択項目を移動できます。

  • 複数選択の場合

    • 初期値は、selectedIndexプロパティで指定します。指定がない場合、すべて非選択状態となります。

    • マウスをクリックすると、選択項目を追加できます。再度クリックすると、非選択状態に戻ります。

    • ↑↓カーソルキーで、マウスオーバーの項目を移動できます。

    • スペースキーで、マウスオーバーの項目の選択/非選択状態を変更できます。

デフォルトlabelProvider

項目リストの配列(options)のメンバ型によって、以下のように動作が異なります。

メンバ型

説明

String型

引数を加工せずそのまま返却します。

Object型

オブジェクトのlabelプロパティの値をラベル文字列とします。labelプロパティ以外は無視します。(注)

注) Selectのように、個々の項目にenabled/disabledを指定することはできません。

optionsプロパティにObjectの配列を利用する場合の定義例を以下に示します。

<script type="text/javascript">
//<![CDATA[
  /**
   * 各オブジェクトには以下のように labelプロパティを定義します。
   * titleプロパティが存在する場合、その項目の補足情報にその値が使用されます。
   *   {
   *    label: "[項目のラベル]",
   *    title: "[項目の補足情報]"
   *  }
   **/

   // foo, barというラベルを持つ2つの項目を作成する場合
   var obj = {
     userOptions : [
      { label:"foo", title:"fooタイトル" },
      { label:"bar", title:"barタイトル" }
     ]
   };
//]]>
</script>

<!-- モデル定義 -->
<div rcf:type="Model" rcf:id="model1" rcf:object="obj"></div>
<!-- SelectList定義 -->
<div rcf:type="SelectList" rcf:options="{model1.userOptions}"></div>
labelProviderプロパティ

labelProviderプロパティには、getLabel関数を持つオブジェクトを指定します。getLabel関数は、リスト項目の文字列を生成するユーザーロジックを記述します。

項目リストの配列(options)メンバがObject(プロパティ:nameとtel)の場合の記述例を、以下に示します。

<script type="text/javascript">
//<![CDATA[
  // labelProviderの定義
  var userLabelProvider = {
    getLabel: function(item) {
      return "名前は" + item.name + "です。電話は" + item.tel + "です。";
    }
  };
  // optionsの定義
  var obj = {
    userOptions : [
      { name:"Taro YAMADA",   tel: "xxx-xxx-xxxx"},
      { name:"Hanako TANAKA", tel: "yyy-yyy-yyyy"}
    ]
  };
//]]>
</script>

<!-- モデル定義 -->
<div rcf:type="Model" rcf:id="model1" rcf:object="obj"></div>
<!-- SelectList定義 -->
<div rcf:type="SelectList" rcf:options="{model1.userOptions}" rcf:labelProvider="userLabelProvider"></div>
multipleとselectedIndex、selectedIndexesの関係について

multipleの値によって、selectedIndexおよびselectedIndexesの扱いは以下のようになります。

  • multiple=false(単一選択)の場合

    部品の初期化時に、selectedIndexの値を基準にして、selectedIndexesの値が変更されます。
    selectedIndexesの初期値設定は無視されます。

    selectedIndexの値

    変更後のselectedIndexesの値

    -1

    [](長さ0の配列)

    -1以外

    selectedIndexの値を持った長さ1の配列

    タグに初期値が指定されていた場合も、上記のルールに従って動作します。

    タグに指定されたselectedIndexesの設定は無視されます。

    selectedIndexesをsetProperty()やモデルバインディングによって変更しようとした場合、エラー(RCF11002)となります。

  • multiple=true(複数選択)の場合

    部品の初期化時に、selectedIndexesの値を基準にして、selectedIndexの値が変更されます。
    selectedIndexの初期値設定は無視されます。

    selectedIndexesの値

    変更後のselectedIndexの値

    [](長さ0の配列)

    -1

    長さ1以上の配列

    selectedIndexesの末尾の要素

    タグに初期値が指定されていた場合も、上記のルールに従って動作します。

    タグに指定されたselectedIndexの設定は無視されます。

    selectedIndexをsetProperty()やモデルバインディングによって変更しようとした場合、エラー(RCF11002)となります。

rendererプロパティ

rendererプロパティには、render関数を持つオブジェクトを指定します。render関数には、リスト項目を表示する領域のDOMノードと、そのほかの項目情報がパラメーターとして渡されます。render関数内のユーザーロジックでDOMノードを操作することで、リスト項目の表示を制御できます。

render関数のパラメーターを以下に示します。

パラメーター

説明

1

node

DOM Node

項目リストを表示する領域のDOMノードを指定します。

2

item

Object

options配列のメンバを指定します。

3

label

String

itemをlabelProviderで変換した文字列です。

4

index

Number

options配列の中のindexを指定します。

rendererプロパティに渡すオブジェクトの例を以下に示します。

<script type="text/javascript">
//<![CDATA[
  var user_Renderer = {
    /**
     * param node 項目を表示する領域のDOMノード
     * param item(Object型またはString型) options配列のn番目要素
     * param label(String型) options配列のn番目要素をlabelProviderにより変換した結果の文字列
     * param index(Number型)  n番目
     */
    render: function(node, item, label, index) {
      //
      //以下ユーザー定義ロジック
      //
      node.innerHTML = '<img src="img.png" />’;
      node.appendChild(document.createTextNode(label));
    }
  };
//]]>
</script>

<div rcf:type="SelectList" rcf:renderer="user_Renderer"></div>

タイルプロパティ

部品全体のスタイルプロパティを以下に示します。

パーツ名

プレフィックス

クラス名

使用可能なスタイル

部品全体

なし

rcf-SelectList

  • サイズ

  • カラー

  • フォント(lineHeightを除く)

  • テキスト(textIndent、textAlign、whiteSpaceを除く)

  • ボーダー

  • パディング

詳細は、「2.9 スタイルプロパティ」を参照してください。

選択項目のスタイル

プレフィックス

クラス

スタイルプロパティ

説明

デフォルト

optionSelected
(選択項目)

rcf-SelectList-optionSelected

backgroundColor

選択項目の背景色を指定します。

#004E98

color

選択項目のフォント色を指定します。

#FFFFFF(白)

optionHovered
(マウスオーバー項目)

rcf-SelectList-optionHovered

backgroundColor

マウスオーバー項目の背景色を指定します。

#316AC5

color

マウスオーバー項目のフォント色を指定します。

#FFFFFF(白)

表示とスタイルプロパティの関係

本部品のスタイルプロパティは、CheckListと同じです。ただし、チェックボックスの表示はありません。詳細は、「2.1.14 CheckList」の「スタイルプロパティ」を参照してください。

ベントリスナ

名前

説明

イベントオブジェクト

onFocus

部品がフォーカスを得たときに呼ばれます。

ActionEvent

onBlur

部品がフォーカスを失ったときに呼ばれます。

onChange
(注)

部品の選択状態が変更されたときに呼ばれます。

onOptionSelected
(注)

項目が選択されたときに呼ばれます。

OptionStateChangeEvent

onOptionDeselected
(注)

項目の選択が解除されたときに呼ばれます。
単一選択の場合、optiondeselected、optionselectedの順番でイベントが発生します。

注) マウス、キーボードなどの入力装置によってUI部品を操作した場合に呼ばれるイベントリスナ

部品共通のイベントリスナもあります。詳細は、「2.8.2 画面部品共通イベントリスナ」を参照してください。

独自のキー操作を設定している場合は、「5.2.3 keypressイベントに関する注意事項 」および「5.2.5 部品に対するキー入力に関する注意事項」を参照してください。

JavaScript API

固有のJavaScript APIはありません。部品共通のJavaScript APIは、「2.8.3 画面部品共通JavaScript API」を参照してください。