Lotus Notes XPages Tips (1) JavaScript
現在、XPage の JavaScriptを勉強中なんですが、調べたコードはTipsとして書き貯めていきたいと思います。
■ユーザ名の表示
return "User Name : " + session.getCommonUserName();
■データ件数の表示
return "Document Count : " + database.getAllDocument().getCount().toFixed();
■指定したデータベースの件数を表示
return session.getDatabase(null,"sample.nsf").getAllDocument().getCount().toFixed();
■サンプルDBの構造
メインページ : 「ビュー」と「新規作成ボタン」があり、データの一覧が参照できる
フォームページ: 「編集ボックス」と「修正ボタン」、「削除ボタン」があり、1件のデータが表示されている
新規作成ページ: 「編集ボックス」と「登録ボタン」、「キャンセルボタン」があり、1件のデータを登録できる
修正ページ : 「編集ボックス」と「登録ボタン」、「キャンセルボタン」があり、1件のデータを修正できる
■新規作成 ・・・ JavaScriptを使わない一般的な方法
・新規作成ボタンに、”新規作成ページ”を”文書作成”で開くシンプルアクションを指定する ・”新規作成ページ”では、”データソース”(文書の編集)を指定し、編集ボックスにフィールドをバインドさせる また、次頁ページに新規作成ボタンのあるページを指定する ・”登録ボタン”のボタンタイプに”送信”を指定する または、”文書保存”と”メインページを開く”シンプルアクションをしていする ・”キャンセルボタン”には、新規作成ボタンのあるページにジャンプするシンプルアクションを指定する ※特殊なボタンタイプを指定することにより、JavaScriptのコードが不要になる
■新規作成 ・・・ JavaScriptを使用する場合
・新規作成ボタンで、新規作成ページにジャンプさせる context.redirectToPage("create"); ・新規作成ページでは、編集ボックスを配置し、セッション変数にバインドさせておく ・登録ボタンに次のコードを指定する var doc=database.createDocument(); doc.sessionItemValue("item",sessionScope.item); doc.sessionItemValue("number",sessionScope.number); doc.save; sessionScope.item = null; sessionScope.number = null; context.redirectToPage("main"); ・キャンセルボタンには次のコードを指定する sessionScope.item = null; sessionScope.number = null; context.redirectToPage("main");
■修正 ・・・ JavaScriptを使わない一般的な方法
・修正ボタンに、”修正ページ”を”文書の編集”で開くシンプルアクションを指定する ・”修正ページ”では、”データソース”(文書の編集)を指定し、編集ボックスにフィールドをバインドさせる また、次頁ページにメインページを指定する ・”登録ボタン”のボタンタイプに”送信”を指定する または、”文書保存”と”メインページを開く”シンプルアクションをしていする ・”キャンセルボタン”には、メインページにジャンプするシンプルアクションを指定する ※特殊なボタンタイプを指定することにより、JavaScriptのコードが不要になる
■修正 ・・・ JavaScriptを使う場合
・修正ボタンに次のコードを指定する session.docUnid = rowdoc.getUniversalID(); sessionScope.item = rowdoc.getItemValueString("item"); sessionScope.number = rowdoc.getItemValueDouble("number"); context.redirectToPage("replace") ・修正ページの登録ボタンに次のコードを指定する var doc = database.getDocumentByUID(sessionScope.docUnid); doc.replaceItemValue("item",sessionScope.item); doc.replaceItemValue("number",sessionScope.number); doc.save; sessionScope.item = null; sessionScope.number = null; context.redirectToPage("main");
■削除 ・・・ JavaScriptを使わない一般的な方法
・削除ボタンに”文書削除”のシンプルアクションを指定する 確認メッセージに"削除しますか?"を指定する
■削除 ・・・ JavaScriptを使う場合
・削除ボタンに次のコードを指定する rowdoc.remove(true); //サーバーサイド windows.confirm("削除しますか?"); //クライアントサイド
■フォームでのナビボタンのサンプル
ノーツクライアントはフォームを表示している際に、リターンキーで次のデータを表示させることができる。
XPageでも同様に、ボタン操作で次のデータを移動させる方法がある。
下記の例は、”MainView”ビューが、全件を表示している場合のナビ方法です。(検索対象に対するナビボタンはtips(6)参照)
●次ボタン var dc = database.getAllDocuments(); var doc = dominoDocument1.getDocument(); var doc = dc.getDocument(doc); var doc1 = dc.getNextDocument(doc); if(doc1 !== null){ var unid = doc1.getUniversalID(); var page = view.getPageName(); context.redirectToPage(page + '?documentId=' + unid + '&action=openDocument'); } ●前ボタン var dc = database.getAllDocuments(); var doc = dominoDocument1.getDocument(); var doc = dc.getDocument(doc); var doc1 = dc.getPrevDocument(doc); if(doc1 !== null){ var unid = doc1.getUniversalID(); var page = view.getPageName(); context.redirectToPage(page + '?documentId=' + unid + '&action=openDocument'); } ●先頭ボタン var dc = database.getAllDocuments(); var doc1 = dc.getFirstDocument(); if(doc1 !== null){ var unid = doc1.getUniversalID(); var page = view.getPageName(); context.redirectToPage(page + '?documentId=' + unid + '&action=openDocument'); } ●最後ボタン var dc = database.getAllDocuments(); var doc1 = dc.getLastDocument(); if(doc1 !== null){ var unid = doc1.getUniversalID(); var page = view.getPageName(); context.redirectToPage(page + '?documentId=' + unid + '&action=openDocument'); }
■文書の表示 ・・・ データ表を使用する特殊な方法
ビューを使わず、複数のデータを表示させることができる。
また、ページャー機能もあるので、何かと便利かも...
・データ表コントロールを配置する ・反復に"Java Script"を指定し、次のコードを入力する database.getAllDocument(); ・コレクション名に"rowdoc"と指定する ・列を追加し3列にする。1行目にラベル、2行目に計算項目を配置し、それぞれの計算項目にコードを入力する rowdoc.getItemValueString("item"); rowdoc.getItemValueDouble("number"); rowdoc.getLastModified();