Announcement

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

    ListGrid: dynamic columns

    Hello,

    I am trying to make my listgrid columns based on user selection.
    The listGrid's datasource is being (at the beginning) attached with DataSource.get("myDS");

    When the user selects the columns to be shown, I call the method listGrid.setFields(field1, field2, ....).

    It actually works, but when there are many columns (in my example 11 columns) the scrolling takes a lot of time.

    When I start the "adminConsole.jsp", and I select the same datasource, it shows even more columns (16) and the scrolling is very smooth.

    Whan am I doing wrong?

    I am using firefox 3.6 and my js log is:

    15:17:29.264:INFO:Log:initialized
    15:17:29.590:WARN:AutoObserver:Use addInterfaceProperties() to add methods to interface [Class AutoObserver]
    15:17:30.007:WARN:Log:New Class ID: 'IAutoFitButton' collides with ID of existing Class object '[Class IAutoFitButton]'. Existing object will be replaced.
    15:17:30.007:WARN:Log:New Class ID: 'HeaderImgButton' collides with ID of existing Class object '[Class HeaderImgButton]'. Existing object will be replaced.
    15:17:59.480:INFO:Log:isc.Page is loaded



    I am testing from within eclipse, so I am not compiling the project.

    I am using SmartGWT 2.4 EE.

    Thank you for your help

    My code: (the relevant method is setAdditionalComponentFields(ListGridField ... fields) )


    Code:
    
    import com.smartgwt.client.data.Criteria;
    import com.smartgwt.client.data.DataSource;
    
    import com.smartgwt.client.widgets.grid.ListGrid;
    import com.smartgwt.client.widgets.grid.ListGridField;
    
    public class SchuelerListGrid extends ListGrid {
    
    	public static final String EMPTY_FIELD = "emptyField";
    	public static final String EMPTY_FIELD_DISPLAY_NAME = " ";
    	private DataSource ds = DataSource.get("schueler");
        private int attachedDataSourceFrom = -1;
        private boolean attachedDataSource = false;
        private ListGridField nameField;
        private ListGridField vornameField;
        private ListGridField gebDatumField;
        
    	public SchuelerListGrid() {
    		super();
    		
    		setLoadingDataMessage("${loadingImage} " +Zedes2.getConstants().loadingMessage());
    		//setLoadingMessage(Zedes2.getConstants().loadingMessage());
    
    		setShowAllRecords(false);
    		setSortField(0);
    		setAutoFetchData(false); 
    		setCanEdit(false);
    		setShowFilterEditor(true);  
    		setFilterOnKeypress(true);  
    		setFetchDelay(500);
    		
    		setComponentFields();
    		setDataSource(ds);
    		
      }
    	
    	private void setComponentFields() {
    		nameField = new ListGridField("name", "Name");
    		vornameField = new ListGridField("vorname", "Vorname");
    		gebDatumField = new ListGridField("geb_datum", "Geb. Datum");
    		setFields(nameField, vornameField, gebDatumField);
    		
    	}
    
    	private void setSchultypCriteria(int schultyp) {
    		
    		Criteria n = new Criteria();
    		n.setAttribute("schultyp",schultyp);
    		
    		fetchData(n);
    	}
    	
    	public void setAdditionalComponentFields(ListGridField ... fields) {
    		ListGridField[] f = new ListGridField[fields.length + 3]; //because of name, vorname, gebDatum
    		f[0] = nameField;
    		f[1] = vornameField;
    		f[2] = gebDatumField;
    		for (int i=3; i<= f.length-1; i++) {
    			f[i] = fields[i-3];
    		}
    		setFields(f);
    	}
    
    	public void attachDataSource(int einrichtungID) {
    		
            attachedDataSourceFrom = einrichtungID;
    		setSchultypCriteria(einrichtungID);
    		attachedDataSource = true;
           
    	}
    	
    	
    	public boolean getHasAttachedDataSourceFrom(int einrichtungID) {
    		
    		
    		return einrichtungID == attachedDataSourceFrom;
    	}
    	
    	
    	public boolean hasAttachedDataSource() {
    		return attachedDataSource;
    	}
    	public void attachDataSourceAll() {
    		fetchData();
    		attachedDataSource = true;
    	}
    	
    }
    Last edited by edulid; 21 Feb 2011, 06:19.

    #2
    Hosted mode (aka Development mode), which is what you're using when you're not compiling, is quite a bit slower than compiled mode. End users will never experience the performance of hosted mode.

    Comment


      #3
      You are right. I just compiled the application and it's very fast!

      Thanks!

      Comment

      Working...
      X