0

我需要开发一个自定义控件,对于任何notesview,它都会在一个小框中显示未读文档的列表......这样我就可以通过重复控制来遵循我以前的问题解决方案:

仅显示未读文档

问题是在我的目标视图中..我的第一列(@modified 是值)降序排列。

当重复控件显示结果时..条目按升序排列。

你有什么建议解决吗?

Tnx你

4

2 回答 2

2

如果您发布一些代码会很好...但这里有一些想法...使用注释视图导航器您可以按视图排序顺序浏览视图。我认为你想要做的是在所有这些文件上获得一个“句柄”,保持相同的顺序。

我假设您没有使用 Java,而只是使用 SSJS。没关系。但这并不意味着您不能使用 Java 对象!

现在我做了一个NotesIn9,用SSJS创建一个JavaObject,它与你想要的非常相似...... 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和treemap。它们很酷,但我认为你需要的是一个 java LinkedHashSet ..(可能是一个 LinkedList - 不确定)代替 HashMap。该视频应该有望告诉您如何创建它们并添加到它们。

尝试在您的函数中创建它,然后在 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 回答