我想在Web浏览器中重新使用笔记视图,因此我需要用HTML表示的笔记视图(带有响应文档层次结构)作为具有列表项(li)的无序列表(ul)。如何将笔记视图转换为html嵌套列表?
我应该用什么SSJS代码来计算这个列表?
我想在Web浏览器中重新使用笔记视图,因此我需要用HTML表示的笔记视图(带有响应文档层次结构)作为具有列表项(li)的无序列表(ul)。如何将笔记视图转换为html嵌套列表?
我应该用什么SSJS代码来计算这个列表?
无。
如果您可以编辑视图,请将其设置为passthru HTML并在列表标记的开头和结尾添加一列。将其设置为隐藏于客户端。
或者将其绑定到重复控件,并将Li标签与计算文本绑定到视图列。在这两种情况下都没有SsJS。
选项1是不希望的;我想在xpage上使用视图数据。选项2我不明白安静。嵌套列表不遵循真正的分类结构,我的意思是有响应线程... – Malin
NotesViewEntry.getPosition(Char分隔符)给出了分层输出。例如,将分隔符定义为“。”它将为第三个顶级入口提供3,为第三个顶级入口的第五个孩子提供3.5,为第三个顶级入口的第五个孩子的第七个孩子提供3.5.7。
为了详细说明Stephan的第二种选择,重复控制并不关心其检索数据的结构。这是一个集合的句柄,其中每个“行”是该集合中的一个元素。因此,如果将它指向myView.getAllEntries()的集合,则每个条目都是NotesViewEntry。
将两者结合在一起,如果您只想使用缩进,则您具有层次结构的级别。另外,从NotesViewEntry你可以知道是否有孩子,所以你是否需要使它成为另一个李或开始另一个UL。
另外,如果你想获得更详细的,看我如何遍历视图来创建XPages中帮助应用Dojo树网格导航http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=XPages%20Help%20Application
不是最漂亮的代码。我希望它有效;
function getList() {
var nav:NotesViewNavigator=database.getView("notesview").createViewNav();
var entry:NotesViewEntry=nav.getFirst();
if (entry!=null){
var countLevel:Integer = 0;
var curLevel:Integer;
var list="";
while (entry != null) {
var edoc:NotesDocument = entry.getDocument();
entryValue = entry.getColumnValues().elementAt(1).toString();
var col:NotesDocumentCollection = edoc.getResponses();
var gotResponse:String;
if (col.getCount()>0){
gotResponse ="1";
}
else{
gotResponse ="0";
}
curLevel = entry.getColumnIndentLevel();
if (curLevel<countLevel){
//no responses & no siblings
var difLevel=countLevel-curLevel;
list=list + "<li>"+entryValue+ "</li>"
var closure="";
for (var i=0;i<(difLevel);i++) {
closure=closure+"</ul></li>"
}
list=list+closure;
countLevel=curLevel;
}
if (curLevel==countLevel){
if(gotResponse=="1"){
//got responses;handle them first
list=list+"<li>";
list=list+entryValue;
list=list+"<ul>";
countLevel=curLevel+1;
}
else{
//must be sibling
list=list + "<li>"+entryValue+ "</li>"
}
}
var tmpentry:NotesViewEntry=nav.getNext(entry);
entry.recycle();
entry=tmpentry;
}
//final closure, last entry could be response doc
var closure = ""
for (var i = 0; i < (countLevel); i++) {
closure = closure + "</ul></li>";
}
list = list + closure;
return list;
} else {
return "No documents found";
}
}
你试过了什么?请记住,SO不是我的工作地点,但是选项1不可取; – stwissel