使用 smartGWT 中的设置内容隐藏添加到布局的 div?

Hide a div added to a layout using set content in smartGWT?

我用的是smartGWT,添加一个div我用的是smartGWT提供的setcontent方法,里面写了HTML

像这样

    m_Holder = new HLayout();
    m_Holder.setHeight("10%");
    m_Holder.setWidth100();

    m_Holder.setContents("<div id=\"scrollable\" class=\"scrollablediv\" style=\"width: 98%;"
                    + "height: 80px; visibility: visible; overflow: auto; position: relative;  border: 1px solid gray;\">"
                    + "<div id=\"legenddiv\"style=\"width: 100%; height: 10%;"
                    + " background-color: #FFFFFF;\"></div></div>");

现在,当我尝试隐藏此布局时,它会隐藏布局而不是 div。 这些div失去了位置,来到了一切的前面。 我做的是这个

    Label legendLabel = new Label( "<font size=\"3\"><span class=\"nobr\">Legends</span></font>" );
    legendLabel.setHeight(12);
    legendLabel.setWidth(80);
    m_ToggleHandlerLayout.addMember(legendLabel);
    m_ToggleHandlerLayout.addClickHandler(new ClickHandler()
    {
        @Override
        public void onClick(ClickEvent event)
        {
            if(m_Holder.isVisible())
            {
                m_Holder.hide();

            }
            else
            {
                m_Holder.show();
            }
        }
    });

如果我只使用一个 div,而不是在 HTML 代码中嵌套 div,此代码工作正常并隐藏 div。 我也在想的是编写一个 JavaScript 代码并使用 clickhandler 本身内部的本地方法调用它,并用它来隐藏外部的 divs。但是,我不想那样做。

任何建议。

这样做的一种方法是,像这样制作这些本机函数...

private final native void hideScrollableDiv() /*-{
    $doc.getElementById('scrollable').style.display = "none"
}-*/;

private final native void showScrollableDiv() /*-{
    $doc.getElementById('scrollable').style.display = "block"
}-*/;

并在 clickhandler 中调用它们

    public void onClick(ClickEvent event)
        {
            if(m_legendHolder.isVisible())
            {
                m_legendHolder.hide();
                hideScrollableDiv();
            }
            else
            {
                showScrollableDiv();
                m_legendHolder.show();
            }
        }

不过,如果有人有其他解决方案,那就太好了。

试试HTML流组件。

但我建议避免尝试嵌入复杂的 HTML,我从未发现仅使用 SmartGWT 组件无法完成的事情。 考虑到 SmartGWT 组件将补偿跨浏览器故障。