-1

谁能建议我如何创建一个数据库驱动的树形菜单来调用表单?

我创建了一个树形菜单,但它是硬编码的(不是动态的)。我还必须为每个菜单项引入一些点击事件来调用表单。但我不确定如何去做。

所以我的问题是如何动态创建树形菜单以及处理单击事件以调用任何表单(也是动态的)的技术是什么?

4

2 回答 2

0

首先,您需要树的某些部分,如您所说的硬编码。您可以查询您的数据库,获取您需要的数据,并使用此数据创建您想要的任何内容(复选框、树项等)并将其添加到您的树中。你不必担心给所有东西起不同的名字,只要确保你的听众是正确的。

于 2012-06-18T08:08:02.207 回答
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 );
于 2016-12-13T11:41:08.437 回答