Hi,
We're currently having a weird problem with 'local' listGrid filtering. The problem happens when the last bit of filtering
data gets removed. The problem is that the underlying ResultSet's allRows array gets truncated to the contents of
the 1st filter's resulting data, rather than actually all the rows that were fetched initially.
To reproduce, use the sample code further below and follow these steps:
1) When the screen gets loaded note the total number of records - let's say 100, depending on your data source
2) Key-in one letter (only one letter) to filter out some of the records (any column). Click filter. Note the total number of records - let's say 75.
3) Key-in a second letter to filter out even more data (same column as step 2). Click filter. You have less rows displayed, everything normal up to now.
4) Now press delete a single time to remove the first letter from your filter. Click filter. You are back with 75 records - OK up to now.
5) Now press delete a second time to remove the last letter from your filter. Click filter. YOU ARE STILL WITH 75 RECORDS.
We should have gone back to 100 records. Or at least this is what I would have expected.
I used the following straight forward code (under SDK version 7.0 beta) to reproduce.
Can you tell me if I'm doing something wrong or if this is a bug?
Thanks for your help!
We're currently having a weird problem with 'local' listGrid filtering. The problem happens when the last bit of filtering
data gets removed. The problem is that the underlying ResultSet's allRows array gets truncated to the contents of
the 1st filter's resulting data, rather than actually all the rows that were fetched initially.
To reproduce, use the sample code further below and follow these steps:
1) When the screen gets loaded note the total number of records - let's say 100, depending on your data source
2) Key-in one letter (only one letter) to filter out some of the records (any column). Click filter. Note the total number of records - let's say 75.
3) Key-in a second letter to filter out even more data (same column as step 2). Click filter. You have less rows displayed, everything normal up to now.
4) Now press delete a single time to remove the first letter from your filter. Click filter. You are back with 75 records - OK up to now.
5) Now press delete a second time to remove the last letter from your filter. Click filter. YOU ARE STILL WITH 75 RECORDS.
We should have gone back to 100 records. Or at least this is what I would have expected.
I used the following straight forward code (under SDK version 7.0 beta) to reproduce.
Can you tell me if I'm doing something wrong or if this is a bug?
Thanks for your help!
Code:
var Test = isc.defineClass("Test", "Canvas"); Test.addProperties ({ width : "100%", height : '100%', //---------------------------------------------------------------------------------------------------------------------------- initWidget : function() { this.Super("initWidget", arguments); var DS_user = DataSource.create ({ ID : 'DS_user', title : 'User', recordXPath : '//selector/row', dataURL : 'data/User.xml', dataFormat : 'xml', fields : [ { name : 'LastName', title : 'Last Name', type : 'text', length : 80, sortDirection : 'ascending' }, { name : 'FirstName', title : 'First Name', type : 'text', length : 80 }, { name : 'Code', title : 'Code', type : 'text', length : 80, hidden : true, primaryKey : true } ] }); var listGrid = ListGrid.create ({ width : '100%', height : '100%', alternateRecordStyles : true, dataSource : DS_user, showFilterEditor : true, dataProperties : { fetchMode : 'local', useClientFiltering : true }, showAllRecords : true, showSortArrow : 'field', selectionType : 'multiple', autoFetchData: true }); this.addChild(listGrid); } });
Comment