2014-10-21 2 views

ответ

4

Вы можете использовать setSelectedValues() метод компонента ListBox, и передать в массив, содержащий все значения списка, например, [ "Value1", "значение2", "value3"]. Поместите это в событие onChange этого флажка, с частичным обновлением списка, и это должно делать то, что вы хотите.

Если вы не хотите жестко кодировать значения списка в своем SSJS, а скорее вытащите доступные значения из списка, проверьте это XSnippet by Sven Hasselbach. Используя этот фрагмент, я привел пример ниже:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
<xp:checkBox text="Select All" id="checkBox1"> 
    <xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="listBox1"> 
     <xp:this.action> 
      <![CDATA[#{javascript: 
       //Get the listbox component 
       var listbox = getComponent('listBox1'); 
       if (getComponent('checkBox1').getValue() == "true") { 
        //Checkbox is checked 
        //Get an iterator for the items in the listbox    
        var childrenList:java.util.ListIterator; 
        childrenList = listbox.getChildren().listIterator(); 

        //Generate the array of items 
        var itemList = []; 
        while (childrenList.hasNext()) { 
         var child = childrenList.next(); 
         itemList.push(child.getItemValue()); 
        } 

        //Set the selectedValues of the listbox 
        listbox.setSelectedValues(itemList); 
       }else if(getComponent('checkBox1').getValue() == "false") { 
        //Checkbox is unchecked 
        //Set listbox to have no selections, empty array 
        listbox.setSelectedValues([]); 
       } 
      }]]> 
     </xp:this.action> 
    </xp:eventHandler> 
</xp:checkBox> 
<xp:br /> 
<xp:listBox id="listBox1" multiple="true" style="height:200px;width:150px"> 
    <xp:selectItem itemLabel="value1" itemValue="value1"></xp:selectItem> 
    <xp:selectItem itemLabel="value2" itemValue="value2"></xp:selectItem> 
    <xp:selectItem itemLabel="value3" itemValue="value3"></xp:selectItem> 
    <xp:selectItem itemLabel="value4" itemValue="value4"></xp:selectItem> 
    <xp:selectItem itemLabel="value5" itemValue="value5"></xp:selectItem> 
</xp:listBox> 
</xp:view> 
+0

Это именно то, что я искал. Я делаю это для конечного пользователя. Скорее установите флажок, чтобы выбрать все элементы списка, а не вручную выбирать их (если их у вас их много) –

Смежные вопросы