Hi Isomorphic,
please see this adapted testcase (now on v11.0p_2017-05-04):
I created it from #liveFilter and #gridCellWidgets (ignore the missing images).
If you scroll down to the middle via the PageDown key and then filter continent for e.g. Europa this happens:
This does not happen in either of these cases:
The issue here is, that if the Gird is not scrolled to the top or to the last record, the user thinks there are no matching records for the newly applied filter.
This does also happen in latest 5.1p. I have the same setting in my application and I'm using virtualScrolling (as this is the default).
Tested with 58.0.3029.81 (64-bit).
Best regards
Blama
please see this adapted testcase (now on v11.0p_2017-05-04):
Code:
isc.ListGrid.create({ ID: "countryList", width:500, height:300, alternateRecordStyles:true, dataSource: worldDS, fields:[ { name: "countryCode", type: "image", title: "Flag", width: 40, align: "center", imageURLPrefix: "flags/16/", imageURLSuffix: ".png" }, {name:"countryName", title:"Country"}, {name:"capital", title:"Capital"}, {name:"continent", title:"Continent"}, {name: "buttonField", title: "Info", align: "center"}, {name: "iconField", title: "Comments/Stats", width: 110} ], autoFetchData: true, showFilterEditor: true, //virtualScrolling: false, showRecordComponents: true, showRecordComponentsByCell: true, recordComponentPoolingMode: "recycle", createRecordComponent : function (record, colNum) { var fieldName = this.getFieldName(colNum); if (fieldName == "iconField") { var recordCanvas = isc.HLayout.create({ height: 22, width: "100%", align: "center" }); var editImg = isc.ImgButton.create({ showDown: false, showRollOver: false, layoutAlign: "center", src: "icons/16/comment_edit.png", prompt: "Edit Comments", height: 16, width: 16, grid: this, click : function () { isc.say("Edit Comment Icon Clicked for country : " + record["countryName"]); } }); var chartImg = isc.ImgButton.create({ showDown: false, showRollOver: false, layoutAlign: "center", src: "icons/16/chart_bar.png", prompt: "View Chart", height: 16, width: 16, grid: this, click : function () { isc.say("Chart Icon Clicked for country : " + record["countryName"]); } }); recordCanvas.addMember(editImg); recordCanvas.addMember(chartImg); return recordCanvas; } else if (fieldName == "buttonField") { var button = isc.IButton.create({ height: 20, width: 65, layoutAlign: "center", icon: "flags/16/" + record["countryCode"] + ".png", title: "Info", click : function () { isc.say(record["countryName"] + " info button clicked."); } }); return button; } else { return null; } }, updateRecordComponent: function (record, colNum, component, recordChanged) { var fieldName = this.getFieldName(colNum); if (fieldName == "iconField") { var membersArray = component.getMembers(); for (i=0;i<membersArray.size;i++) { if (i == 0) { membersArray[i].addProperties({ click : function () { isc.say("Edit Comment Icon Clicked for country : " + record["countryName"]); } }); } else { membersArray[i].addProperties({ click : function () { isc.say("Chart Icon Clicked for country : " + record["countryName"]); } }); } } } else if (fieldName == "buttonField") { component.addProperties({ icon: "flags/16/" + record["countryCode"] + ".png", click : function () { isc.say(record["countryName"] + " info button clicked."); } }); } else { return null; } return component; } });
If you scroll down to the middle via the PageDown key and then filter continent for e.g. Europa this happens:
- Scrollbar gets smaller (expected)
- Scrollbar is scrolled down to the very end (expected)
- No record is in sight (position is "one row after where the last record would be visible as top row", use mouse wheel up/down to see this) (unexpected)
When the virtualScrolling system is active, the last scroll position scrolls the last record to the top of the viewport, leaving blank space underneath. This is a necessary and unavoidable consequence of mapping the position of the scrollbar thumb to an unknown amount of remaining space without being able to know the total scrollable area in advance (since record heights vary).
- showRecordComponents: false or
- virtualScrolling: false (like in the sample)
The issue here is, that if the Gird is not scrolled to the top or to the last record, the user thinks there are no matching records for the newly applied filter.
This does also happen in latest 5.1p. I have the same setting in my application and I'm using virtualScrolling (as this is the default).
Tested with 58.0.3029.81 (64-bit).
Best regards
Blama
Comment