Re: FilteredTableDataProvider and JasperReports
Axel Künzinger <axel.kuenzinger <at> gmx.de>
2007-07-01 12:15:57 GMT
In the init method of my page I bind a CachedRowDataProvider to a
FilteredTableDataProvider and set a TableDataFilter. The
FilteredTableDataProvider is bound to a table component.
drawingviewDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet)
getValue("#{SessionBean1.drawingviewRowSet}"));
filteredTableDataProvider1.setTableDataProvider((com.sun.data.provider.TableDataProvider)
getValue("#{drawing$Listdrawings.drawingviewDataProvider}"));
filteredTableDataProvider1.setTableDataFilter((com.sun.data.provider.TableDataFilter)getValue("#{drawing$Listdrawings.basicTableDataFilter}"));
To filter the data I use the following code. phaseid (and some more) is
a value from a Dropdown Component.
public String button2_action() {
ArrayList filters = new ArrayList();
Integer phaseid = (Integer) ddphaseid.getSelected();
if (phaseid !=0 & phaseid != null){
FieldKey comparePhaseid =
this.getFilteredTableDataProvider1().getFieldKey("drawphaseid");
FilterCriteria phaseidFilter = new
CompareFilterCriteria(comparePhaseid,phaseid);
filters.add(phaseidFilter);
}
FilterCriteria[] filterArray = new FilterCriteria[filters.size()];
filters.toArray(filterArray);
basicTableDataFilter.setFilterCriteria(filterArray);
filteredTableDataProvider1.setTableDataFilter(basicTableDataFilter);
return null;
}
Works perfectly, the data is filtered and displayed. Now I want to pass
the filtered data to Jasper Reports. I tried to get the filtered data
with the following code, which doesn´t work.
public String button1_action() {
// Get number of rows from DataProvider
int noofDBRows = filteredTableDataProvider1.getRowCount();
log(String.valueOf(noofDBRows));
if (noofDBRows > 0) {
filteredTableDataProvider1.cursorFirst();
do {
String test = (String)
filteredTableDataProvider1.getValue("drawingkey");
log (test);
}
while (filteredTableDataProvider1.cursorNext());
}
The problems are:
1. the filteredTableDataProvider contains not only the filtered data, it
contains the complete data of the cachedRowDataProvider.
2. the .cursorNext() method doesn´t work, I get an infinit loop
What would be nice is a .getFilteredRows() method in the
filteredTableDataProvider.
Axel
Data Virtue schrieb:
>
> Axel Kuenzinger wrote:
>
>> Hi,
>>
>> in the http://www.netbeans.org/kb/55/vwp-reports.html tutorial the data
>> from the DataProvider is passed as ResultSet to JasperReports. How can I
>> pass the filtered data from a FilteredTableDataProvider?
>>
>> thanks, Axel
>>
>>
>>
>
> can you provide code example?
>
>