2011-08-22 72 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);