Lotus Notes XPages Tips (6) JavaScriptのひな型ソースとサンプルDB
今回は、自分自身で頻繁に使いそうな、サーバーサイドのJavaScriptのひな型ソースとサンプルDBです。
ノーツは検索機能を追加すると、急にややこしくなります。
というか、ソートしてくれません。
それと、自作の関数をライブラリに登録するようなことができません。
関数を使用する場所で毎回定義するしか無いようです。
■サンプルDBの内容
xPage1000.nsf 一覧表、新規登録、参照、修正、削除 の基本的な機能をもったDB xPage1100.nsf 上記DBにナビボタンを追加した。 ノーツクライアントには、リターン&BSキーでフォーム画面を移動できる機能があるが、 同様な機能を組み込んでいる。 xPage1200.nsf 上記DBに検索機能を追加したDB。 通常、検索を行うとデータの並びはビューの異なる順番で並んでしまうが、ビューの順番にソートしなおす機能を 組み込んでいる。
■画面イメージ
■サンプルDB
■ソース
・一覧表ページ
[viewPanelクラス] ◆value function DCLSort(inDCL, viewName) { var outDCL = database.FTSearch(""); var nav = database.getView(viewName).createViewNav(); nav.gotoFirstDocument(); for (i = 0; i & lt; nav.getCount(); i++) { var entry = nav.getCurrent(); var doc = inDCL.getDocument(entry.getDocument()); if (doc !== null) { outDCL.addDocument(doc); } nav.gotoNextDocument(); } return outDCL; } function dcToList(inDCL) { var list = new Array; var doc = inDCL.getFirstDocument() for (i = 0; i & lt; inDCL.getCount(); i++) { list.push(doc.getUniversalID()); doc = inDCL.getNextDocument(doc); } return list; } if (sessionScope.key == "" | sessionScope.key == null) { var Dc1 = database.getAllDocuments(); var Dc2 = DCLSort(Dc1, "MainView"); sessionScope.list = dcToList(Dc2); return Dc2 } else { var Dc1 = database.FTSearch(sessionScope.key); var Dc2 = DCLSort(Dc1, "MainView"); sessionScope.list = dcToList(Dc2); return Dc2 } ◆var rowdoc [viewColumnクラス] ◆カラム rowdoc.getItemValueString("Hen") ◆ページURL var page = "fPage.xsp"; //page = view.getPageName(); return page + "?documentId=" + rowdoc.getUniversalID() + "&action=openDocument"
・フォームページでのナビボタン
◆次へ function listToDc(list) { var outDCL = database.FTSearch(""); for (i = 0; i & lt; list.length; i++) { var doc = database.getDocumentByUNID(list[i]); outDCL.addDocument(doc); } return outDCL; } if (sessionScope.list !== null) { var Dc2 = listToDc(sessionScope.list); var doc = dominoDocument1.getDocument(); var doc = Dc2.getDocument(doc); var doc1 = Dc2.getNextDocument(doc); if (doc1 !== null) { var unid = doc1.getUniversalID(); var page = view.getPageName(); context.redirectToPage(page + '?documentId=' + unid + '&action=openDocument'); } } ◆前へ function listToDc(list) { var outDCL = database.FTSearch(""); for (i = 0; i & lt; list.length; i++) { var doc = database.getDocumentByUNID(list[i]); outDCL.addDocument(doc); } return outDCL; } if (sessionScope.list !== null) { var Dc2 = listToDc(sessionScope.list); var doc = dominoDocument1.getDocument(); var doc = Dc2.getDocument(doc); var doc1 = Dc2.getPrevDocument(doc); if (doc1 !== null) { var unid = doc1.getUniversalID(); var page = view.getPageName(); context.redirectToPage(page + '?documentId=' + unid + '&action=openDocument'); } } ◆最初 function listToDc(list) { var outDCL = database.FTSearch(""); for (i = 0; i & lt; list.length; i++) { var doc = database.getDocumentByUNID(list[i]); outDCL.addDocument(doc); } return outDCL; } if (sessionScope.list !== null) { var Dc2 = listToDc(sessionScope.list); var doc1 = Dc2.getFirstDocument(); var unid = doc1.getUniversalID(); var page = view.getPageName(); context.redirectToPage(page + '?documentId=' + unid + '&action=openDocument'); } ◆最後 function listToDc(list) { var outDCL = database.FTSearch(""); for (i = 0; i & lt; list.length; i++) { var doc = database.getDocumentByUNID(list[i]); outDCL.addDocument(doc); } return outDCL; } if (sessionScope.list !== null) { var Dc2 = listToDc(sessionScope.list); var doc1 = Dc2.getLastDocument(); var unid = doc1.getUniversalID(); var page = view.getPageName(); context.redirectToPage(page + '?documentId=' + unid + '&action=openDocument'); }