2016-10-06 8 views
4

私はこれを読んでpost は私が尋ねたいと非常に似ています。しかし、私はそのポストからの解決策を使って自分の問題を解決しようとしましたが、成功しませんでした。私はそのポストで質問することができないことを理解しています。だから私は私のコードでここに投稿するだろう。ビューを検索すると結果がない場合はメッセージを表示

アプリケーションでは、ユーザーがボタンをクリックすると、結果ページをユーザーにリダイレクトすることができます。

結果ページには、計算フィールドとビューがあります。計算後のフィールドは、検索後にビューに結果がない場合にメッセージを表示するために使用されます。結果がユーザーの条件と一致する場合、ビューに結果が表示されます。

結果がユーザーの選択と一致する場合、ビューは正常に動作しますが、結果がユーザーの選択に一致しない場合は、ビュー列ヘッダーのみが表示されます。したがって、計算されたフィールドを使用して、検索機能が実行され、結果が返されないことをユーザーに通知するメッセージを表示したいと考えています。さもなければ、ユーザーは検索結果が返されないことを知りません。

ここに結果ページのコードを示します。

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
<xp:this.data> 
    <xp:dominoDocument var="document1"></xp:dominoDocument> 
</xp:this.data> 

<xp:text escape="true" id="computedField1" style="margin-left:200.0px">  </xp:text> 
<xp:br></xp:br> 
<xp:viewPanel id="viewPanel4" viewStyle="width:600.0px;background- color:rgb(255,255,255);margin-left:200.0px" rows="15"> 
    <xp:this.data> 
     <xp:dominoView var="view4" 
      viewName="OfficerDepLoc"> 
      <xp:this.search><![CDATA[#{javascript:var qstring= ""; 
if ((sessionScope.officerSearch != null && sessionScope.officerSearch != "")|| (sessionScope.depSearch != null && sessionScope.depSearch != "")|| (sessionScope.locSearch != null && sessionScope.locSearch !="")) 
{ 
    qstring = " (FIELD officer contains " + sessionScope.officerSearch + " & FIELD department contains" + sessionScope.depSearch + "& FIELD location contains" + sessionScope.locSearch + ")"; 
} 
var db:NotesDatabase = session.getDatabase("", "myapplication.nsf", false) 
var dc:NotesDocumentCollection = db.getAllDocuments(); 
if (dc.getCount() == 0) 
{ 
    qstring = getComponent("computedField1").setValue("After search, there is no record found"); 
} 

return qstring; 
}]]></xp:this.search> 
     </xp:dominoView> 
    </xp:this.data> 
    <xp:viewColumn columnName="Officer" id="viewColumn11"> 
     <xp:viewColumnHeader value="officer " id="viewColumnHeader11" sortable="true"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 
    <xp:viewColumn columnName="Department" id="viewColumn12"> 
     <xp:viewColumnHeader value="department" id="viewColumnHeader12" sortable="true"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 
    <xp:viewColumn columnName="Location" id="viewColumn13"> 
     <xp:viewColumnHeader value="location" id="viewColumnHeader13" sortable="true"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 
    <xp:this.facets> 

     <xp:pager partialRefresh="true" layout="Previous Group Next" xp:key="footerPager" id="pager5"> 
     </xp:pager> 
    </xp:this.facets></xp:viewPanel> 
</xp:view>  

私はページをテストするとき、私はビューは検索が何の結果を持っていない場合、メッセージを表示するように計算されたフィールドをトリガしません注意してください。

私はまた、このコードを計算フィールドに入れてメッセージを表示しようとしましたが、何も表示しませんでした。

var db:NotesDatabase = session.getDatabase("", "myapplication.nsf", false) 
var dc:NotesDocumentCollection = db.getAllDocuments(); 
if (dc.getCount() == 0) 
{ 
    qstring = getComponent("computedField1").setValue("After search, there is no record found"); 
} 

ですから、検索結果に結果が表示されない場合は、メッセージを表示する方法が分かりますか?どうもありがとう。

答えて

2

このようなことがありますか?

<xp:panel id="refreshPanel"> 
    <xp:viewPanel id="viewPanel4" rendered="getComponent("viewPanel4").getRowCount()>0"> 
    viewpanel columns 
    </xp:viewPanel> 
    <xp:panel id="noentriesPanel" rendered="getComponent("viewPanel4").getRowCount()==0"> 
    text no entries 
    </xp:panel> 
    </xp:panel> 
+2

フランクスの答えはうまくいくかもしれませんが、私は自分のアプローチをミックスに捨てると思っていました。私はいつもあなたの検索パネルの上のテキストを計算しました。 "あなたの検索" [検索ターム] "返された[getCount]ドキュメント"のように計算されます こうして、私はただ一つのビューパネルをレンダリングする必要があり、ユーザーには0個のドキュメントがあることを伝え、ドキュメントを返すと、ビューに表示されるドキュメントの数を一目で見ることができます。 –

関連する問題