2012-07-12 53 views
0

我正在爲這個遊戲奮戰一段時間了。 我有我的檢測TreeItemRenderer如下:ZK TreeitemRenderer - 渲染()沒有調用

public class PermissionTreeRenderer implements TreeitemRenderer<PermissionTreeNode> { 

    @Override 
    public void render(final Treeitem treeItem, PermissionTreeNode node, int arg) throws Exception { 
     final PermissionTreeNode ptn = (PermissionTreeNode)node; 
     Treerow treeRow = new Treerow(); 

     treeItem.setOpen(ptn.isOpen()); 
     treeItem.appendChild(treeRow); 
     PermissionItem current = (PermissionItem) ptn.getData(); 
     treeRow.appendChild(new Treecell(current.getName())); 

    } 
} 

我BasicComposer(延伸GenericForwardComposer)既有屬性

private PermissionTreeModel treeModel; 
private TreeitemRenderer treeitemRenderer = new PermissionTreeRenderer(); 

與getter和setter。

在我.zul我的樹是這個樣子:

<tree id="permissionTree" width="100%" 
    model="@{win$composer.treeModel}" 
    treeitemRenderer="@{win$composer.treeitemRenderer}"> 
    <treecols> 
     <treecol label="Item" width="400px" /> 
     <treecol label="Wert" /> 
    </treecols> 
</tree> 

什麼我迄今所測試看到的是,他加載模型(他步入吸氣),而不是檢測TreeItemRenderer。不管我做什麼,都不會調用渲染方法。

編輯:我的問題是,我不僅填補根節點(用於測試),它至少需要一個子項繪製...

好@dennis:我會嘗試使用類似的新途徑你說,所以這是我的代碼:

<tree id="permissionTree" width="100%" 
    model="@bind(vm.treeModel)" style="text-align:left;"> 
    <treecols> 
     <treecol label="Item" width="400px" /> 
     <treecol label="Wert" /> 
     <treecol label="Einfügen" width="100px" /> 
    </treecols> 
    <template name="model" var="node" status="s"> 
     <treeitem open="@bind(node.open)"> 
      <treerow> 
       <treecell label="@bind(s.index)" /> 
       <treecell label="@bind(node.data)" /> 
       <treecell> 
        <hbox> 
         <button label="Index" 
          onClick="@command('showIndex', index=s.index)" /> 
         <button label="Delete" 
          onClick="@command('delete', node=node)" /> 
         <button label="Add After" 
          onClick="@command('addAfter', node=node)" /> 
         <button label="Add Before" 
          onClick="@command('addBefore', node=node)" /> 
        </hbox> 
       </treecell> 
      </treerow> 
     </treeitem> 
    </template> 
</tree> 

但它只是不會填充我的樹數據了。哦,那是什麼狀態變量?我是否需要在其他文件中做好準備?

編輯:問題解決了,不得不申請org.zkoss.bind.BindComposer

謝謝你們!

+0

ZK哪個版本您使用的? – Tim 2012-07-13 08:24:40

回答

2

有兩點需要注意:

  1. treeitemRenderer贊成itemRenderer已經過時了。
  2. 檢查您的treeModelnull因爲Sets the renderer which is used to render each item if Tree.getModel() is not null.