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();

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です