2013-06-05 68 views
1

我試圖在X頁面上生成分類列表的類別和子類別。到目前爲止,我嘗試了兩種方法:使用重複控件和自定義控件的遞歸

第一個工作是基於Jesse Gallagher in this blog post的代碼,並按照我想要的順序使用xe:outline控件輸出列表。但是,我希望能夠爲每個條目添加額外的功能和樣式(例如,編輯和刪除鏈接),但無法確定如何在大綱控件中呈現自定義控件。

第二種方法是試圖利用嵌套重複和自定義控件來生成列表,但對於我的生活,我不能完全得到這項工作,我不知道是否因爲它不會工作或我只是缺少一些基本的東西。對於XPage上的基本代碼是:

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"> 
<xp:this.data> 
    <xp:dominoView var="Categories" viewName="vLUTopCat"></xp:dominoView> 
</xp:this.data> 

<xc:ccUI navigationPath="Admin/Main" pageName="Admin"> 
    <xp:this.facets> 
     <xp:panel xp:key="facetMiddle"> 
     <h2>Categories</h2>    
      <ul id="adminCatList"> 
       <xp:repeat id="parentCat" rows="30" value="#{Categories}" var="DocCat" indexVar="catIdx" disableOutputTag="true">      
        <xc:ccCategoryList> 
         <xc:this.catID><![CDATA[#{javascript:DocCat.getColumnValue("docID")}]]></xc:this.catID> 
         <xc:this.catName><![CDATA[#{javascript:DocCat.getColumnValue("categoryName")}]]></xc:this.catName> 
        </xc:ccCategoryList>            
       </xp:repeat> 
      </ul> 
     </xp:panel> 
    </xp:this.facets> 
</xc:ccUI> 

和自定義控制(ccCategoryList)的代碼是:

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"> 


<xp:text escape="true" id="computedField1" 
    value="#{compositeData.catName}" tagName="li" /> 
<xp:repeat id="rptSubCat" rows="30" var="subCat" 
    disableOutputTag="true"> 
    <xp:this.facets> 
     <xp:text disableTheme="true" xp:key="header" 
      escape="false"> 
      <xp:this.value><![CDATA[<ul>]]></xp:this.value> 
     </xp:text> 
     <xp:text disableTheme="true" xp:key="footer" 
      escape="false"> 
      <xp:this.value><![CDATA[</ul>]]></xp:this.value> 
     </xp:text> 
    </xp:this.facets> 
    <xp:this.value><![CDATA[#{javascript:var tview = database.getView("vLUSubCat"); 
var v = compositeData.catID; 
var vc:NotesViewEntryCollection = null; 
if (v != null) { 
vc = tview.getAllEntriesByKey(v); 
} 
vc}]]></xp:this.value> 
    <xc:ccCategoryList> 
     <xc:this.catID><![CDATA[#{javascript:subCat.getColumnValues()[3]}]]></xc:this.catID> 
     <xc:this.catName><![CDATA[#{javascript:subCat.getColumnValues()[1]}]]></xc:this.catName> 
    </xc:ccCategoryList> 
</xp:repeat> 
</xp:view> 

所以我相關的問題是:

  1. 無論如何,在使用bean節點的xe:outline控件中輸出自定義控件?
  2. 我可以使用重複和自定義控件從視圖遞歸輸出數據,就像我可以使用bean節點一樣嗎?
  3. 有我俯瞰一個更好的替代方法(例如,在一個bean使用Java集合和重複控制?)

感謝

回答

1

1)有一種方法來添加自己的CustomNode報告綱要擴展看起來into

com.ibm.xsp.extlib.tree.ITreeNode; 
com.ibm.xsp.extlib.tree.complex.ComplexLeafTreeNode; 
com.ibm.xsp.extlib.tree.impl.TreeNodeWrapper; 

2)對不起,我從來沒有tryed建立一個遞歸的XPage元素作爲一個自定義的控制,但我不會recoment它。

3)您可以使用<xe:forumView><xp:viewPanel>都有很好的可能性來確定viewEntry /行是否是一個類別。併爲您提供可以將所需的所有內容添加到行中的鏈接,按鈕或其他控件。

或其他方式來獲得你所需要的是建立你外形/ TreeView控件與DojoTreeView: Link1 Link2

+0

感謝您的想法邁克爾。我得出的結論是,我可能不得不建立自己的控制權,但只是作爲最後的手段,如果沒有什麼已經做我想做的事情。 – TrailDragon

+0

你有沒有試過''?正如我所看到的,您使用視圖作爲數據源,爲什麼不使用viewControl來顯示數據。 –

+0

我在嘗試重新編輯以前的評論後,無意中提交它! :( ForumView我曾考慮過,但目前類別之間的關係不是維護在一個傳統的Notes父子層次結構中,而更像是通過JOIN連接多個SQL表 - 與Jesse的組織結構圖視圖非常相似。如果有必要,還沒有完全排除它回到使用視圖。(這是我確切知道如何在PHP和mySQL中完成這些操作的場景之一,並且我相信我應該也可以在XPages中完成這項工作,如果這樣做合理的話。) – TrailDragon

相關問題