当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2016年9月26日月曜日

XPagesでカテゴリフィールドに設定する

皆さん、こんにちは。今週で9月も終わりです。9月といえば、一つの区切りという感じがします。
企業の期だったり、テレビでいえば番組改編期だったり。

10月になると何か変わるのかな?って調べてみたら、「厚生年金保険・健康保険の加入対象が広がる」そうです。
私には直接は関係ないのですが、こういうことも知っておかないといけないですね。


閑話休題。


さて、今日もXPagesの話題です。

クラシックアプリでよくやっていた?のが、ダイアログフィールドを作成して、既存のフィールドから選択したり新規に値を設定したりするという、分類わけするためのフィールド設定だと思います。
カテゴリフィールドを選択したときの画面

ちなみにこのフィールドの設定内容は次の通りです。
カテゴリフィールドの設定内容1
カテゴリフィールドの設定内容2

実際にこのフィールドを使って文書を作ってみました。
そしてカテゴリ別ビューという形で表示したのが下図です。
カテゴリ別ビュー

これをXPagesで実現する方法って・・・書いてなかったんですよね。

ただし、実際には「タグ」を使いましょうということで記事を書いています。
タグクラウドを使ってみよう
Dojo リストテキストボックスを使ってタグっぽく表現してみよう

これはこれで便利なんですけど、すでにどんなタグが作成されているのかを確認するのが難しいんですよね。

なので、クラシックアプリと同じような形で入力できるようにしましょう。

まず、フォームを表示するためのXPageを作成しておきます。

次に、カテゴリフィールドに対応するコントロールを配置します。
カテゴリは複数選択できるようにしたいので、リストボックスコントロールを配置します。
データソースのバインドは当然、カテゴリフィールドです。
そして、「値」の項目には、フィールドの設定内容と同じように、カテゴリを取得するための式を入力します(今回は「byCategory」ビューの1列目から取得するようにします)。
また、複数設定できるようにするため 、その設定も含めます。
コントロールの部分をソース表示すると以下のような形になります。

 
  
   <![CDATA[#{javascript:@DbColumn( "", "byCategory", 1 )}]]>
  
 


これで、既存のカテゴリを選択することができるようになります。
今度は新規でカテゴリを入力させるためのコントロールを配置します。
こちらは編集ボックスコントロールを配置します。
このコントロールに入力した内容は、先ほどのカテゴリ用のフィールドにマージさせるので、
このコントロールはデータソースのバインドをする必要はありません。

データソースにバインドさせないと、文書が読込モードでも入力領域として表示されてしまうので、
可視式を設定して編集時のみ表示させるようにします。
したがってコントロールのソースは下のようになります。
ちなみに何のためのフィールドかをわかりやすくするためにplaceholderの設定もしています。
※placeholderについては、XPagesでplaceholderを実現してみるを参照のこと

 
  
  
 




これで新規入力もできるようになりました。
ただ、これでは保存してもカテゴリフィールドに反映されません。
ということで最後に[保存]ボタンにその内容を記述します。
var cat1 = getComponent( "categories1" ).getValue();
var cat2 = getComponent( "categories2" ).getValue();
var cat  = @Trim( @List( cat1, cat2 ) );
document1.replaceItemValue( "Categories", cat );
document1.save();


@List関数でcategories1コントロールとcategories2の値をマージして、@Trim関数で""を取り除いています。
その内容をCategoriesフィールドにセットして文書を保存しています。



実行結果は下図になります。
カテゴリフィールドをXPagesで実現してみた

タグクラウドを使って今風にしてもいいですし、今回のようにクラシックアプリのような形にするのもよいでしょう。
使い勝手が良いのが一番ですので、みなさんの使いやすい方を選んでくださいね。

では今日はこの辺で・・・







Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: