I have a ListGrid (for selecting things) with filtering that needs to exclude records from another ListGrid (showing what's been previously selected).
I create a criteria using NOT_IN_SET on the previously selected item IDs, and pass that to the selection grid.
The selection grid successfully excludes the previously selected items, but filtering has a problem.
Filtering works as I type characters. It works as I delete characters until I delete the last character.
Deleting the last character doesn't trigger the filter, so the displayed items remains the same as when it had one character.
I've tried a variety of things, shown below, but so far no luck.
What am I missing?
Here's how I create the grid...
Here's how I create the criteria...
Thanks,
-chris
SmartClient Version: v11.0p_2016-08-09/Enterprise Deployment (built 2016-08-09)
FireFox 57.0.2
I create a criteria using NOT_IN_SET on the previously selected item IDs, and pass that to the selection grid.
The selection grid successfully excludes the previously selected items, but filtering has a problem.
Filtering works as I type characters. It works as I delete characters until I delete the last character.
Deleting the last character doesn't trigger the filter, so the displayed items remains the same as when it had one character.
I've tried a variety of things, shown below, but so far no luck.
What am I missing?
Here's how I create the grid...
Code:
private static ListGrid createGrid(Criteria crit) {
final ListGrid grid = new ListGrid();
grid.setDataSource("MyDataSource");
grid.setWidth100();
grid.setHeight100();
// grid.setInitialCriteria(crit);// <-- no filter on final char delete (one or more char OK)
// grid.setCriteria(crit);// <-- no filter on final char delete (one or more char OK)
// grid.setFilterEditorCriteria(crit);// <-- no data initially, filters but crit is ignored.
// grid.getFilterEditor().setInitialCriteria(crit);// <-- gets an error on `getFilterEditor()`
// grid.setFilterByCell(true);// <-- no effect on issue - e.g. with `setInitialCriteria(crit)`
grid.setAutoFetchData(true);
grid.setShowRollOver(true);
grid.setFilterOnKeypress(true);
grid.setLeaveScrollbarGap(false);
return grid;
}
Code:
private static Criteria createFilterCriteria(ListGrid grid) {
ListGridRecord[] records = grid.getRecords();
String[] ids = new String[records.length];
for (int i = 0; i < records.length; i++) {
ListGridRecord r = records[i];
String id = r.getAttribute("id");
ids[i] = id;
}
Criteria c = new Criterion("id", OperatorId.NOT_IN_SET, ids);
return c;
}
-chris
SmartClient Version: v11.0p_2016-08-09/Enterprise Deployment (built 2016-08-09)
FireFox 57.0.2
Comment