使用 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 组件将补偿跨浏览器故障。
我用的是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 组件将补偿跨浏览器故障。