0
我有一個<tr:table value="#{mybean.tableValue} binding="#{mybean.tableBinding}">
,我想顯示選擇多個啓用。 我使用列表作爲集合,當我從<tr:selectManyCheckbox>
valueChangeListener中選擇具有部分觸發器的值時,將從數據庫獲取值。選擇初始行CoreTable
返回的每個行,如果某個值是真的,我希望此行標誌着作爲<tr:table value="#{mybean.tableValue} binding="#{mybean.tableBinding}">
選擇我認爲這個問題是我的綁定值不是valueChangeEvent運行inspite我時更新把binding.setValue數據庫的結果(我檢查了binding.getRowCount()
不超過mybean.tableValue.size()
相等),然後選擇的值是不正確的)
任何想法,爲什麼綁定rowCount時不表的值相等?
UPDATE:
<tr:subform id="subform1">
<tr:panelFormLayout rows="6">
<tr:selectManyCheckbox id="val1" label="Values"
layout="horizontal" value="#{mybean.data1Values}"
autoSubmit="true" valueChangeListener="#{mybean.valuesChangeListener}">
<f:selectItems value="#{mybean.list1Values}"/>
</tr:selectManyCheckbox>
</tr:panelFormLayout>
</tr:subform>
<tr:spacer width="5px"/>
<tr:subform id="subform2">
<tr:table rows="0" partialTriggers=":::subform1:val1 "
value="#{mybean.data2Values}" var="item" id="tabladatos" width="75%"
rowSelection="multiple" rowBandingInterval="1" binding="#{mybena.tableBinding}"
verticalGridVisible="true" horizontalGridVisible="true">
<tr:column id="_head1" headerText="Colum1" width="30%">
<tr:outputText id="_head1_value" value="#{item.value1}"/>
</tr:column>
<tr:column id="_head2" headerText="Colum2" width="30%">
<tr:outputText id="_head2_value" value="#{item.value2}"/>
</tr:column>
</tr:table>
</tr:subform>
public void valuesChangeListener(ValueChangeEvent event) {
if (event != null) {
List<Integer> valores = (List<Integer>) event.getNewValue();
data2Values.addAll(databaseDAO.search(valores));
RowKeySet rks = new RowKeySetImpl();
rks.clear();
tableBinding.setSelectedRowKeys(rks);
tableBinding.setValue(data2Values);
for (int x = 0; x < tableBinding.getRowCount(); x++) {
dataEntity row = (dataEntity) tableBinding.getRowData(x);
tableBinding.setRowIndex(x);
if (row.isTrue()) {
Object key = tableBinding.getRowKey();
rks.add(key);//tableBinding.getSelectedRowKeys().add(key);
} else {
//do something
}
}
tableBinding.setVar("item");
tableBinding.setSelectedRowKeys(rks);
FacesContext context = FacesContext.getCurrentInstance();
context.renderResponse();
}
}
謝謝!