使用 David Leedy 的回复中的一些花絮,我能够通过将所选 UNID 的集合保存在范围变量中来创建解决方案,使用java.util.ArrayList()
// in the postOpenView of the custom control I put...
if (sessionScope.myList==null) {
var myList = new java.util.ArrayList();
sessionScope.put('myList',myList);
}
// in the onchange event of my combobox I put the following code,
// and set the partial update to viewPanel1
var myArray = sessionScope.get("myList");
var keycode;
var vp:com.ibm.xsp.component.xp.XspViewPanel = getComponent("viewPanel1");
for(i=0; i < vp.getRowCount() ; i++){
vp.setRowIndex(i);
var rowData=vp.getRowData();
keycode = rowData.getUniversalID();
//my combobox is bound to the sessionScope viewFilter
var test1 = sessionScope.get("viewFilter")==" "; //(used for select all)
var test2 = rowData.getColumnValue("$3").toString().startsWith(sessionScope.get("viewFilter"));
if (test2 || test1) {
if (!myArray.contains(keycode)) {
myArray.add(keycode);
}
} else {
myArray.remove(keycode);
}
}
我还在视图中添加了一个带有人造复选框的列(这只是装饰性的),我可以在其中选择要从“myArray”中添加(或删除)的其他行
// the onclick event of my faux checkbox column
// with partial update set to viewPanel1
var myArray = sessionScope.get("myList");
var keycode = rowData.getUniversalID();
if (!myArray.contains(keycode)) {
myArray.add(keycode);
} else {
myArray.remove(keycode);
}
感谢所有的帮助!