我想在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