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

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

2012年9月5日水曜日

XPagesで読者名フィールドを使ってみよう!

9月になったので、少しは涼しくなったのかな?と思ったのですが、甘かったです・・・
やっぱり昼間は暑い!暑すぎます!


はやく「涼しい」季節になって欲しいと願う筆者です。

さて、そんな残暑が厳しい9月ですが、そこをなんとか乗り切るためにこのボタンをクリックしましょう!
にほんブログ村 IT技術ブログへ



ということで、またまたXPagesのお話しです。
今日は、XPages で読者名フィールドを設定してみましょう。

やり方はいくつかあります。
まず一番簡単な方法は、次の通りです。
1.フォームを作成する。
2.フィールドを「読者」「計算結果」として追加する(仮にフィールド名は、readersとします)。
3.上記のフィールドの計算式は、自分自身のフィールド名を記述する(下図参照)。
読者名フィールドの設定
4.フォームを保存する。
5.フォームを表示するためのXPageを作成する。
6.readersフィールドにバインドした編集ボックスコントロールを追加する。
7.フォームのデータソースの「フォーム検証の実行」を"文書保存時"もしくは"両方"のいずれかに設定する(下図参照)。
フォーム検証の実行
8.XPage を保存する。

これで、文書を保存すると、readersフィールドに入力した内容が、読者名フィールドに設定されます。
下図は、XPages アプリケーション上で、文書を作成した後、ノーツクライアントでその文書のプロパティを確認した様子です。
文書プロパティ(読者名フィールド)

こちらのやり方は、非常に簡単で良いのですが、フォーム上の計算式がすべて実行されてしまうので、複雑なフォームだと制御が難しくなります。


もう一つの方法は、XPages 上の イベントで読者名フィールドを設定するというものです。
手順は、先ほどの1.~6.までは同じです。
7.が違います。
文書を保存するためのボタン(でも、リンクでも良いのですが・・・)のイベントを少し修正します。

実は、
「作成者/名前/読者」フィールドの実現方法に書いてあるので、二番煎じになってしまうのですが、ここでも書いてしまいます。いいですよねぇ?

保存ボタンを作成したら、イベントビューを開きます。
次に、アクションを追加して、スクリプトの実行を選択します。
スクリプトエディタ内の式には、以下のように記述します。
var doc = document1.getDocument( true );

var item = doc.getFirstItem( "readers" );
item.setReaders( true );

document1.save();
文書保存時のアクション


1行目のdocument1.getDocument(true)で、画面上の文書データをNotesDocumentオブジェクトとして取得しています。この時、引数にtrueを設定しないと、新規文書の保存時にエラーになってしまいます。これポイントです(筆者は悩みました・・・)。
3行目のdoc.getFirstItem()では、"readers"フィールドをNotesItemオブジェクトとして取得しています。
そして、4行目のitem.setReaders()でreadersフィールドを読者名フィールドとして設定しています。
Lotus Scriptの場合、IsReaders プロパティをtrueにすれば良いのですが、JavaScriptでのNotesDocumentクラスの場合、書き方が違うので注意が必要ですね。

5行目のdocument1.save()は、XPages 上で文書を保存するためのJavaScript構文です。

これで文書を保存すると、readersフィールドが読者名フィールドとして設定されます。


読者名フィールドにロール名なんかを設定しておくと、ロールを付与されたユーザーだけが文書を参照できるようになるので、とても便利ですね。


是非、試してみてください。
そして、当ブログにフィードバックしてやってください!






【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ 

0 件のコメント: