Hi Isomorphic,
I have a recordComponent enabled ListGrid ordered by date where I want to show the newest entries on load (=scroll to the very bottom).
While creating this testcase I found out that disabling virtualScrolling fixes my issue.
Therefore this has no priority for me, but is an bug nevertheless I assume. Please see the scrolling positions for the calls with virtualScrolling=true. Setting recordComponentHeight did not make a difference.
See this BuiltInDS-based testcase (v10.1p_2017-10-05):
This code in this sample (v10.1p_2017-10-25) also shows the issue, although it scrolls to a different position than in the testcase above and shows an empty screen.
The same code in the same sample in v11.1p_2017-10-26 works as expected.
Best regards
Blama
I have a recordComponent enabled ListGrid ordered by date where I want to show the newest entries on load (=scroll to the very bottom).
While creating this testcase I found out that disabling virtualScrolling fixes my issue.
Therefore this has no priority for me, but is an bug nevertheless I assume. Please see the scrolling positions for the calls with virtualScrolling=true. Setting recordComponentHeight did not make a difference.
See this BuiltInDS-based testcase (v10.1p_2017-10-05):
Code:
package com.smartgwt.sample.client;
import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.Version;
import com.smartgwt.client.core.KeyIdentifier;
import com.smartgwt.client.data.DSCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.types.RecordComponentPoolingMode;
import com.smartgwt.client.util.Page;
import com.smartgwt.client.util.PageKeyHandler;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.layout.VLayout;
public class BuiltInDS extends VLayout implements EntryPoint {
public void onModuleLoad() {
KeyIdentifier debugKey = new KeyIdentifier();
debugKey.setCtrlKey(true);
debugKey.setKeyName("D");
Page.registerKey(debugKey, new PageKeyHandler() {
public void execute(String keyName) {
SC.showConsole();
}
});
setWidth100();
setHeight100();
{
final IButton recreateBtn = new IButton("Recreate normal");
recreateBtn.setWidth(200);
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new MyWindow(false, false, false).show();
}
});
addMember(recreateBtn);
}
{
final IButton recreateBtn = new IButton("Recreate RC, no VS");
recreateBtn.setWidth(200);
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new MyWindow(false, true, false).show();
}
});
addMember(recreateBtn);
}
{
final IButton recreateBtn = new IButton("Recreate RC, with VS");
recreateBtn.setWidth(200);
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new MyWindow(false, true, true).show();
}
});
addMember(recreateBtn);
}
{
final IButton recreateBtn = new IButton("Recreate normal + normal");
recreateBtn.setWidth(200);
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new MyWindow(true, false, false).show();
}
});
addMember(recreateBtn);
}
{
final IButton recreateBtn = new IButton("Recreate normal + RC, no VS");
recreateBtn.setWidth(200);
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new MyWindow(true, true, false).show();
}
});
addMember(recreateBtn);
}
{
final IButton recreateBtn = new IButton("Recreate normal + RC, with VS");
recreateBtn.setWidth(200);
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new MyWindow(true, true, true).show();
}
});
addMember(recreateBtn);
}
draw();
}
private class MyWindow extends Window {
public MyWindow(boolean showNormal, boolean useRecordComponents, boolean useVirtualScrolling) {
setWidth("95%");
setHeight("95%");
setMembersMargin(0);
setModalMaskOpacity(70);
setTitle(" (" + Version.getVersion() + "/" + Version.getSCVersionNumber() + ")");
setTitle("ListGrid with setShowRecordComponents does not scroll down to end with scrollToRow(10000)" + getTitle());
setShowMinimizeButton(false);
setIsModal(true);
setShowModalMask(true);
centerInPage();
if (showNormal) {
final ListGrid SupplyItemLG = new SupplyItemLG(false, false);
SupplyItemLG.fetchData(null, new DSCallback() {
@Override
public void execute(DSResponse dsResponse, Object data, DSRequest dsRequest) {
SupplyItemLG.scrollToRow(10000);
}
});
addItem(SupplyItemLG);
}
final ListGrid SupplyItemLG = new SupplyItemLG(useRecordComponents, useVirtualScrolling);
SupplyItemLG.fetchData(null, new DSCallback() {
@Override
public void execute(DSResponse dsResponse, Object data, DSRequest dsRequest) {
SupplyItemLG.scrollToRow(10000);
}
});
addItem(SupplyItemLG);
}
}
private class SupplyItemLG extends ListGrid {
public SupplyItemLG(boolean useRecordComponents, boolean useVirtualScrolling) {
super(DataSource.get("supplyItem"));
setWidth(1000);
setHeight100();
setAutoFetchData(false);
if (useRecordComponents) {
setShowRecordComponents(true);
setShowRecordComponentsByCell(true);
setRecordComponentPoolingMode(RecordComponentPoolingMode.RECYCLE);
setPoolComponentsPerColumn(true);
setVirtualScrolling(useVirtualScrolling);
// setRecordComponentHeight(22);
}
ListGridField itemName = new ListGridField("itemName");
ListGridField sku = new ListGridField("SKU");
ListGridField category = new ListGridField("category");
ListGridField units = new ListGridField("units");
setFields(itemName, sku, category, units);
setSortField("itemName");
}
}
}
Code:
isc.ListGrid.create({
ID:"dsListGrid",
width: "100%",
height: 600,
autoFetchData: false,
dataSource: "supplyItem",
showRecordComponents: true,
virtualScrolling: true,
});
dsListGrid.fetchData(
null,
function (dsResponse, data, dsRequest) {
dsListGrid.scrollToRow (100000);
}
);
Best regards
Blama
Comment