コンボボックスで選択肢を出す

2012/6/30

コンボボックスで表示されるキーワードの選択肢の出し方。

基本的な考え方

コンボボックスの選択肢はビューを@関数で処理するだけでOK。

こんな感じのコードになる。

  01:  <xp:comboBox id="comboBoxViewFilterText1" value="#{requestScope.locationfilter}">
  02:    <xp:selectItem itemLabel="No Filtering" itemValue="" />
  03:    <xp:selectItems>
  04:      <xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn(@DbName(),"管理部署別",1))}]]></xp:this.value>
  05:    </xp:selectItems>
  06:  </xp:comboBox>
  

入力も可能なDojo Combo Box

コンボボックスは既存のデータしか選択できない。クラシカルNotesの「リストに無い値も可」のように、 新しいキーワードを手入力したい場合もある。

こういうときは、Dojo Combo Boxを使えばいい。 先ほどの<xp:comboBox>を<xe:djComboBox>に変えればいいだけ。「xeなんて知らないよ」という感じのエラーが出るときは、そのXPage やカスタムコントロールのコードの先頭の方にある<xp:view>に"xmlns:xe="の宣言を追加すればいい。

  <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
  

こんな感じのコードになる。

  001: <?xml version='1.0' encoding='UTF-8'?>
  002: <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
  003:   <xe:djComboBox id="djComboBox1" value="#{sessionScope.keyword}">
  004:     <xp:selectItems>
  005:       <xp:this.value>
  006:         <![CDATA[#{javascript:@DbColumn([], "keywords", 1)}]]>
  007:       </xp:this.value>
  008:     </xp:selectItems>
  009:   </xe:djComboBox>
  010: </xp:view>
  

これで選択枠が直接入力できるようになるし、一文字入力するとマッチする選択肢だけリストアップしてくれるので大変便利。