特定の文書を開く

ホーム画面やヘルプ画面で特定の文書のリッチテキストフィールドを表示すれば、お知らせや使い方の説明を簡単に掲示できる。

その方法を説明してみよう。

メイン画面のようす

基本的な考え方

Notes文書タイプのデータソースで特定の文書のUIDを指定しておけば、そのデータソースは特定の文書を指すようになる。

データソースに文書IDを設定

後は編集コントロールのvalueプロパティにデータソース.フィールドをバインド(紐付け)してやればうまく特定の文書の内容を表示できる。

たいていはリッチテキストフィールドに説明書などを記載しておき、それをリッチテキストコントロールで表示させてやればうまくいく。

ただ、文書IDを直接指定すると、文書をコピーするだでUIDがずれるので、そのつど設計を直さないといけない。

対応としては、文書の件名にユニークな文字列を設定しておき、その文書をビューから検索し、UIDを得て、それをデータソースの文書IDに 指定してやればいい。

準備

例として、Memoというフォームを用意して、[Title]と[Body]という2つのフィールドを用意しておく。[Body]がリッチテキストフィールドだ。 さらに、「ヘルプ検索用」というビューを用意する。1列目にTitleを表示する。1列目をソートしておくのも忘れずに。

文書をひとつ作っておき、[Title]に"メイン"という名前をつけておこう。[Body]にはホーム画面で表示するにふさわしいリッチな文書を作っておこう。

ホームXPageのソースコード

ホーム画面のXPageはこんな感じのコードになる。

  01: <xp:this.data>
  02:   <xp:dominoDocument var="document1" action="openDocument" formName="Memo">
  03:     <xp:this.documentId>
  04:       <![CDATA[#{javascript:
  05:         var view:NotesView = database.getView("ヘルプ一覧");
  06:         var doc:NotesDocument = view.getDocumentByKey("メイン", true);
  07:         if (doc == null) {
  08:             return null;
  09:         } else {
  10:             return doc.getUniversalID();
  11:         }
  12:       }]]>
  13:     </xp:this.documentId>
  14:   </xp:dominoDocument>
  15: </xp:this.data>
  16: <div class="lotusFrame">
  17:   <xc:xcBanner></xc:xcBanner>
  18:   <xc:xcTitleBar></xc:xcTitleBar>
  19:   <div class="lotusMain">
  20:     <xc:xcMenu></xc:xcMenu>
  21:     <div id="lotusContent" class="lotusContent">
  22:       <xp:inputRichText id="inputRichText1" value="#{document1.Body}" />
  23:       </div>
  24:   </div>
  25:   <xc:xcFooter></xc:xcFooter>
  26: </div>