2011-08-22 47 views
5

我想创建Vaadin下拉2分隔符。我找不到实现该方法的方法,谁能帮我解决这个问题?Vaadin combobox

这是我要显示我滴一路下滑:

  • 选项1个
  • 选项2
  • ------------;
  • select 1
  • select 2
  • -----------;
  • 组1

我该怎么做?

+0

创建使用Vaadin的组合框代码Vaadin部件。您可以覆盖HTML内容在客户端被过滤掉的地方,并使用br标签添加该行。 – MarterJay

回答

4

没有内置的方式来添加分隔符到选择。我能想到的唯一方法是添加一个包含所需分隔符的项目作为其标题。例如,如果您使用默认标题(项目标识)select.addItem("-----");应该足够。这应该适用于ComboBoxes和NativeSelect。

3

您可以实现一个包含客户端行为的新Vaadin组件,但这不是一个简单的解决方案。 “Vaadin之书”和Vaadin论坛的这个页面https://vaadin.com/book/-/page/gwt.html可以为此提供帮助。

此外,使用现有组件创建您自己的组件是另一种解决方案。您可以实现一个特殊的组合框,它可以接受String或Component数组的值。这样做的方式是使用Vaadin面板,布局和大小和位置的窗口,然后单击监听器。

0

你总是可以做

{select.addItem(“-----”);}

有一次,我也希望有一个做这样的事情,但有这样做没有适当的方式Vaadin。我实际上创建了一个扩展组合框的Vaadin小部件。在Vaadin的客户端小部件中,他们在将项目添加到列表之前过滤掉HTML内容。因此,使用客户端代码覆盖该功能,并使用HTML标记“
”添加该行。

0
select.addItem("-----"); 

看起来像最好的方式,我不知道其他的一些

顺便说一句,如果你是从一些名单阅读项目,你可以结合起来,与一些项目计数器和(itemsCount%n)==0运营商“N”后设置分离器项目插入:)

0

您可以将项目与一些JavaScript添加到选定的(如前所述),然后禁用分隔符:

  1. 将项目添加到选择。 cb.addItem(“separator”); cb。setItemCaption(“separator”,“-------------”);

  2. 执行的JavaScript = “”

    • “变种选择= document.getElementsByTagName( '选择')的JavaScript

      最终字符串;”

    • “for(var j = 0; j < selects.length; j ++){”
    • “var op = choose [j] .getElementsByTagName('option');”
    • “为(VAR I = 0;我< op.length;我++){”
    • “如果(OP [I]的.text ==“” + separatorText +“')的运算[I] .disabled =真正;”
    • “}}”; Page.getCurrent()。getJavaScript()。execute(javascript);