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');
}
