Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    ListGrid autofit problem in 5.0p and GWT 2.7

    I have problem after updating Smartgwt from 4.1p to 5.0p_2015_02_25 in last versions of FF, IE and Chrome

    If I load ListGrid data from datasource, the autofit not succeed in first load.
    On the second load the autofit works OK.

    Here is small example:
    If you click first time to "Set data" button, the autofit does not work. On second click it is OK.

    Code:
    package x.y.z;
    
    import com.google.gwt.core.client.EntryPoint;
    import com.smartgwt.client.data.DataSource;
    import com.smartgwt.client.data.fields.DataSourceTextField;
    import com.smartgwt.client.types.AutoFitWidthApproach;
    import com.smartgwt.client.widgets.IButton;
    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.ListGridRecord;
    import com.smartgwt.client.widgets.layout.VLayout;
    
    
    public class LGTest implements EntryPoint{
    
    	@Override
    	public void onModuleLoad() {
    		final ListGrid lg = new ListGrid();
    		lg.setDataSource(new TestDS());
    		lg.setAutoFitFieldWidths(true);
    		lg.setAutoFitExpandField("f3");
    		lg.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
    		lg.setWidth100();
    		lg.setHeight100();
    		lg.setData(new ListGridRecord[]{});
    
    		IButton btSetData = new IButton("Set data", new ClickHandler() {
    
    			@Override
    			public void onClick(ClickEvent event) {
    				lg.invalidateCache();
    				lg.fetchData();
    			}
    		});
    
    		VLayout vl = new VLayout();
    		vl.addMember(lg);
    		vl.addMember(btSetData);
    		vl.setWidth100();
    		vl.setHeight100();
    		vl.draw();
    	}
    
    	public class TestDS extends DataSource {
    
    		public TestDS() {
    			setFields(new DataSourceTextField[]{
    					new DataSourceTextField("f1", "field 123"),
    					new DataSourceTextField("f2", "field xyz"),
    					new DataSourceTextField("f3", " ")
    			});
    
    			setTestData(getData());
    			setClientOnly(true);
    		}
    	}
    
    	protected ListGridRecord[] getData() {
    		ListGridRecord[] recs = new ListGridRecord[10];
    		for (int i = 0; i< recs.length; i++) {
    			recs[i] = new ListGridRecord();
    			recs[i].setAttribute("f1", "ListGridField_1_ListGridRow_" + i);
    			recs[i].setAttribute("f2", "ListGridField_2_ListGridRow_" + i);
    		}
    		return recs;
    	}
    }
    Thanks Pavel
Working...
X