Lotus Notes XPages Tips (6) JavaScriptのひな型ソースとサンプルDB

今回は、自分自身で頻繁に使いそうな、サーバーサイドのJavaScriptのひな型ソースとサンプルDBです。

ノーツは検索機能を追加すると、急にややこしくなります。
というか、ソートしてくれません。

それと、自作の関数をライブラリに登録するようなことができません。
関数を使用する場所で毎回定義するしか無いようです。

■サンプルDBの内容

 xPage1000.nsf 

  一覧表、新規登録、参照、修正、削除 の基本的な機能をもったDB

 xPage1100.nsf 
  上記DBにナビボタンを追加した。

  ノーツクライアントには、リターン&BSキーでフォーム画面を移動できる機能があるが、
  同様な機能を組み込んでいる。

 xPage1200.nsf 
  上記DBに検索機能を追加したDB。

  通常、検索を行うとデータの並びはビューの異なる順番で並んでしまうが、ビューの順番にソートしなおす機能を
  組み込んでいる。

■画面イメージ

■サンプルDB

XPage_sample

■ソース

・一覧表ページ

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

コメントを残す

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