나는 복수 선택이 가능하도록 표시하고자하는 <tr:table value="#{mybean.tableValue} binding="#{mybean.tableBinding}">
을 가지고 있습니다. 컬렉션에 List를 사용하고 있습니다. 부분 트리거가있는 <tr:selectManyCheckbox>
valueChangeListener에서 값을 선택하면 값이 데이터베이스에서 가져옵니다. 각 행에 대해초기 행 선택 CoreTable
어떤 값이 true이면 나는 문제가 내 바인딩 값이 난 Ɒ이 때 valueChangeEvent 실행을 업데이트되지 않는 것입니다 생각 <tr:table value="#{mybean.tableValue} binding="#{mybean.tableBinding}">
선택으로, 내가 표시이 행을 원 반환 데이터베이스 binding.setValue 결과 넣어 결합 rowCount의 테이블의 동일한 값이 아닌 이유 선택된 값)
짐작 올바르지 않은 후 (전 binding.getRowCount()
같지 mybean.tableValue.size()
보다 것을 확인)?
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();
}
}
감사합니다!