0

メモビューの小さなボックスに未読ドキュメントのリストを表示するカスタムコントロールを開発する必要があります...そのため、繰り返しコントロールを使用して以前の質問ソリューションに従います。

未読文書のみ表示

問題は、ターゲット ビューで..最初の列 (@modified が値) の順序が降順であることです。

繰り返しコントロールが結果を表示すると、エントリは昇順になります。

解決するための提案はありますか?

Tnxあなた

4

2 に答える 2

2

ちょっとしたコードを投稿してくれればいいのですが... ここにいくつかの考えがあります... メモビューナビゲーターを使用して、ビューを並べ替えた順序でビューを見ていきます。あなたがやりたいと思うことは、同じ順序を維持するすべてのドキュメントの「ハンドル」を取得することです。

Java を使用しておらず、SSJS のみを使用していると思います。それはいいです。しかし、それは Java オブジェクトを使用できないという意味ではありません!

今、私はあなたが望むものとかなり似たもののためにSSJSでJavaObjectを作成するためにしばらく前にNotesIn9をしました... http://notesin9.com/index.php/2011/07/11/notesin9-ee-009-using -java-hashmaps-and-treemaps-with-xpages/

そのショーでは、SSJS ロジックだけを使用してドキュメントを取得するのではなく、ライブでドキュメントを選択していました。

あなたがやりたいと思うのは、あなたの見解を把握して歩くSSJS関数を作成することです。SSJSに本当に便利なようなものはありません... Javaはあります。しかし、ここに、少なくとも開始するための機能があります。

 function getViewEntryCollection(myKey:string) {
    // this assumes sub directories are involved.
var dbPath = database.getFilePath().split(database.getFileName())[0];
var myDb:NotesDatabase = session.getDatabase(session.getServerName(),dbPath + "myNSF",false);
var myView:NotesView = myDb.getView("viewName");
var vec:NotesViewEntryCollection = myView.getAllEntriesByKey(myKey, true);
return vec
}

ここが興味深い部分です。ドキュメントをループしたい。XpagesCheatsheet.com のチートシートにその例があります。ループ中に UNIDS を保存します。

上記のビデオでは、Java オブジェクトのハッシュマップとツリーマップについて説明しています。それらはクールですが、HashMapの代わりにJava LinkedHashSet ..(LinkedListの可能性があります-わからない)が必要だと思います。ビデオは、うまくいけば、それらを作成して追加する方法を教えてくれるはずです.

関数で作成してから、UNID の LinkedHashSet へのループで作成してみてください。私の理解では、入力された順序が保持されます。これは現在、私のビューを制御しています。

実際、UNIDSは必要ないと思います... viewEntryをLinkedHashSetに直接入れることができます...長期的にはより良いでしょう。

とにかく - それが役立つことを願っています

デイブ

于 2013-07-26T18:54:05.480 に答える
0

問題を解決するために、このコードを繰り返しコントロールに使用しました。

Ventry=function(ve:NotesViewEntry){
this.dataModify = ve.getDocument().getLastModified().toJavaDate().getTime();
this.unid=entry.getDocument().getUniversalID()
}

sortFunctionDescending = function(a,b) {
var x = a.dataModify;
var y = b.dataModify;
return ( (x<y) ? 1 : ((x>y) ? -1 : 0)); 
}

var viewEntries=[];
database.getView('(MY VIEW THAT I SHOW UNREAD)').refresh();
var Collection:NotesViewEntryCollection=database.getView('(AllDocumentsUnread)').getAllUnreadEntries();
var entry:NotesViewEntry=Collection.getFirstEntry();
while (entry!=null){ //loop over all entryes
viewEntries.push( new Ventry( entry) );
entry = Collection.getNextEntry();
}
Collection.recycle();
viewEntries.sort(sortFunctionDescending);  //effettua il sorting
return (viewEntries);

そのため、私が使用しているドキュメント値にアクセスするには(たとえば、lastmodified データを計算フィールドに)

var unid=rowData.unid;
return(database.getDocumentByUNID(unid).getLastModified().toJavaDate());
于 2013-07-29T13:40:39.737 に答える