Filter Data in a Range
Available in ZK Spreadsheet EE only
ZK Spreadsheet can filter data to find a subset of data in a range.
Purpose
Filtered data display rows that meet provided criteria, and hide those trivial ones.
AutoFilter
Use Range.autoFilter() to toggle AutoFilter for sheet in a range. After applied AutoFilter, user can specify criteria by calling Range.autoFilter(integer, object, integer, object, boolean) to filter data in a range.
Reapply filter
If data within AutoFilter range has been added, modified or deleted. Reapply a filter can display different results using same criteria. Use Range.applyFilter() to reapply current filter.
Clear filter
Use Range.showAllData() to clear current filter.
ZUML
<zk>
<div height="100%" width="100%" apply="org.zkoss.zssessentials.config.AutoFilterComposer">
Criteria: hide "222"
<div>
<button id="autoFilter" label="Toggle AutoFilter" mold="trendy"></button>
<button id="reapplyAutoFilter" label="Reapply AutoFilter" mold="trendy"></button>
<button id="clearAutoFilter" label="Clear AutoFilter" mold="trendy"></button>
</div>
<spreadsheet id="spreadsheet" src="/WEB-INF/excel/config/autoFilter.xlsx"
maxrows="200"
maxcolumns="40"
width="100%"
height="450px"></spreadsheet>
</div>
</zk>
Composer
Toggle AutoFilter
Spreadsheet spreadsheet;
int rowIndex;
int columnIndex;
public void onClick$autoFilter() {
AutoFilter autoFilter = Ranges.range(spreadsheet.getSelectedSheet(), rowIndex, columnIndex).autoFilter();
alert(autoFilter == null ? "Clear AutoFilter" : "Applied AutoFilter");
}
Reapply AutoFilter
public void onClick$reapplyAutoFilter() {
Ranges.range(spreadsheet.getSelectedSheet()).applyFilter();
}
Clear AutoFilter
public void onClick$clearAutoFilter() {
Ranges.range(spreadsheet.getSelectedSheet()).showAllData();
}
View complete source of ZUML autoFill.zul
View complete source of composer AutoFilterComposer.java
Version History
Version | Date | Content |
---|---|---|
2.1.0 | May, 2011 | AutoFilter |
All source code listed in this book is at Github.