2012-06-17 56 views
-1

任何人都可以建議我如何創建一個數據庫驅動的樹形菜單,將調用一個窗體?如何創建一個動態樹菜單EXT-GWT(GXT)

我創建了一個樹形菜單,但它是硬編碼的(不是動態的)。我還必須爲每個菜單項引入一些點擊事件來調用表單。但我不確定如何去做這件事。

所以我的問題是如何動態地創建一個樹形菜單,以及處理點擊事件來調用任何形式(也是動態的)的技術是什麼?

+0

你的問題有點太寬泛。 [你有什麼嘗試](http://mattgemmell.com/2008/12/08/what-have-you-tried/)關於動態樹?你有什麼問題? – Leigh

回答

0

首先,你需要樹的一些部分,如你所說的硬編碼。你可以查詢你的數據庫,獲取你需要的數據,以及使用這些數據創建你想要的任何東西(複選框,treeitems等),並將它添加到你的樹中。你不必擔心給所有事物分配不同的名字,只要確保你的聽衆是正確的。

0

請找到創建動態樹的代碼。在這我從文本框中獲取數據並將其添加到樹中。

HorizontalPanel hpanl = new HorizontalPanel(); 

    tree.addSelectionHandler(new SelectionHandler<TreeItem>() { 

     @Override 
     public void onSelection(SelectionEvent<TreeItem> event) { 

      tbox.setText(getChildToParentRoot(event)); 
      System.out.println("Height::"+event.getSelectedItem().getOffsetHeight()+"Weight::"+event.getSelectedItem().getOffsetWidth()); 
      System.out.println("Selected::" + event.getSelectedItem().getParentItem()); 
      Window.alert("Selected Item:" + event.getSelectedItem().getParentItem().getText()); 

     } 

     private String getChildToParentRoot(SelectionEvent<TreeItem> event) { 
      TreeItem child = event.getSelectedItem(); 
      String st = null; 
      while (child.getParentItem() != null) { 
       st = st + child.getText(); 
       child = child.getParentItem(); 
      } 
      st = st + child.getText(); 

      return st; 
     } 

    }); 

    hpanl.setBorderWidth(1); 
    hpanl.setSpacing(5); 
    hpanl.add(option); 
    Button subtbtn = new Button("Add"); 
    subtbtn.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      String option1 = option.getText(); 
      System.out.println("TextBox Value::" + option1); 
      if (tree.getSelectedItem() == null) { 
       tree.addItem(new TreeItem(option1)); 
      } 
      else { 

       TreeItem current = tree.getSelectedItem(); 

       current.setSelected(false); 
       current.addItem(new TreeItem(option1)); 
      } 

     } 
    }); 
    Button delete = new Button("Delete"); 
    delete.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      tree.getSelectedItem().remove(); 

     } 
    }); 
    hpanl.add(subtbtn); 
    hpanl.add(delete); 
    VerticalPanel vpanel = new VerticalPanel(); 

    vpanel.add(tree); 
    hpanl.add(tbox); 
    hpanl.add(vpanel); 
    RootPanel.get().add(hpanl);