Announcement

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

    Problem with ListGridField and data paging

    Hi guys. I'm developing a UI with SmartGWT. I have two problems with ListGrid.
    1- I can't implement data paging. I fetch datas from an xml file connected with a DataSource. When I call listgrid.setData(DataSource.getInstance());
    I would fetch a limit set of data. I tried with litsgrid.fetchmode(fetchmode.PAGED) but it doesn't work.
    2- In each row, I'd want a label above the value field which explain what field is it. I have grid.showHeader(false) thus the fields names in the listgrid's header should appear in each row above the value field. I have extended createRecordComponent method and it works, but the value of field appears twice.

    this is the code of the class wich I talk above
    Code:
    package org.ewr.client;
    
    import java.util.Date;
    
    import com.google.gwt.i18n.client.DateTimeFormat;
    import com.google.gwt.user.client.ui.Composite;
    import com.google.gwt.user.client.ui.VerticalPanel;
    import com.smartgwt.client.types.Alignment;
    import com.smartgwt.client.types.FetchMode;
    import com.smartgwt.client.types.ListGridFieldType;
    import com.smartgwt.client.util.SC;
    import com.smartgwt.client.widgets.Button;
    import com.smartgwt.client.widgets.Canvas;
    import com.smartgwt.client.widgets.HTMLFlow;
    import com.smartgwt.client.widgets.ImgButton;
    import com.smartgwt.client.widgets.Label;
    import com.smartgwt.client.widgets.events.ClickEvent;
    import com.smartgwt.client.widgets.events.ClickHandler;
    import com.smartgwt.client.widgets.grid.CellFormatter;
    import com.smartgwt.client.widgets.grid.ListGrid;
    import com.smartgwt.client.widgets.grid.ListGridField;
    import com.smartgwt.client.widgets.grid.ListGridRecord;
    import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
    import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
    import com.smartgwt.client.widgets.layout.HLayout;
    import com.smartgwt.client.widgets.layout.VStack;
    
    public class RaceListGrid extends Composite{
    	
    	private ListGridField raceIdField;
    	private ListGridField typeField;
    	private ListGridField dateField;
    	private ListGridField membersField;
    	private ListGridField distanceField;
    	private ListGridField friendsField;
    	private ListGridField buttonsField;
    	
    	public RaceListGrid(){
    		
    		//RACEID
    		raceIdField = new ListGridField("raceId","");
    		raceIdField.setHidden(true);
    		
    		//TYPE
    		typeField = new ListGridField("type","");
    		typeField.setType(ListGridFieldType.IMAGE);
    		typeField.setAlign(Alignment.CENTER );
    	    typeField.setImageSize(50);
    	    typeField.setImageURLSuffix(".png");
    	    
    	    //DATE
    	    //dateField = new ListGridField("date", "Data Inizio");
    	      
    	      //final DateTimeFormat dateFormatter = DateTimeFormat.getFormat("dd/mm/yy hh:MM:ss");
    	      /*dateField.setCellFormatter(new CellFormatter() {
    	         
    	         @Override
    	         public String format(Object value, ListGridRecord record, int rowNum,int colNum) {
    	            if (value != null) {  
    	                 
    	                    try {  
    	                        Date dateValue = (Date) value;  
    	                        return dateFormatter.format(dateValue);  
    	                    } catch (Exception e) {  
    	                        return value.toString();  
    	                    }  
    	                } else {  
    	                    return "";  
    	                } 
    	         }
    	      });
    	      */
    	    //MEMBERS
    	      membersField = new ListGridField("members","");
    	      
    	    //DISTANCE
    	      distanceField = new ListGridField("distance","");
    	      distanceField.setCellFormatter(new CellFormatter() {
    	          
    	          @Override
    	          public String format(Object value, ListGridRecord record, int rowNum,
    	                int colNum) {
    	             // TODO Auto-generated method stub
    	             return value.toString()+" km";
    	          }
    	       });
    	      
    	    //FRIENDS
    	      friendsField = new ListGridField("friends","");
    	      
    	    //BUTTONS
    	      buttonsField = new ListGridField("buttons","");
    	      buttonsField.setWidth(100);
    		
    	      final ListGrid raceGrid = new ListGrid() {  
    	            @Override  
    	            protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {  
    	  
    	                String fieldName = this.getFieldName(colNum);  
    	                
    	                if (fieldName.equals("members")){
    	                	VStack contentDiv = new VStack();
    	                	HTMLFlow label = new HTMLFlow();
    	                	label.setContents("<span>Iscritti<span></br>"+record.getAttribute("members"));
    	                	
    	                
    	                	
    	                	contentDiv.addMember(label);
    	                	
    	                	
    	                	return contentDiv;
    	                }else if (fieldName.equals("buttons")) {  
    	                	
    	                	VStack contentDiv = new VStack();
    	                	
    	                	Button subscribeButton = new Button("Iscriviti");
    	                	
    	                    HLayout recordCanvas = new HLayout(3);  
    	                    recordCanvas.setHeight(22);  
    	                    recordCanvas.setAlign(Alignment.CENTER);  
    	                    ImgButton editImg = new ImgButton();  
    	                    editImg.setShowDown(false);  
    	                    editImg.setShowRollOver(false);  
    	                    editImg.setLayoutAlign(Alignment.CENTER);  
    	                    editImg.setSrc("fb_share.png");  
    	                    editImg.setPrompt("Edit Comments");  
    	                    editImg.setHeight(16);  
    	                    editImg.setWidth(16);  
    	                    editImg.addClickHandler(new ClickHandler() {  
    	                        public void onClick(ClickEvent event) {  
    	                            SC.say("Edit Comment Icon Clicked for country : " + record.getAttribute("members"));  
    	                        }  
    	                    });  
    	  
    	                    ImgButton chartImg = new ImgButton();  
    	                    chartImg.setShowDown(false);  
    	                    chartImg.setShowRollOver(false);  
    	                    chartImg.setAlign(Alignment.CENTER);  
    	                    chartImg.setSrc("fb_like.png");  
    	                    chartImg.setPrompt("View Chart");  
    	                    chartImg.setHeight(16);  
    	                    chartImg.setWidth(16);  
    	                    chartImg.addClickHandler(new ClickHandler() {  
    	                        public void onClick(ClickEvent event) {  
    	                            SC.say("Chart Icon Clicked for country : " + record.getAttribute("members"));  
    	                        }  
    	                    });  
    	                    
    	                    recordCanvas.addMember(editImg);  
    	                    recordCanvas.addMember(chartImg);  
    	                    
    	                    contentDiv.addMember(subscribeButton);
    	                    contentDiv.addMember(recordCanvas);
    	                    
    	                    
    	                    return contentDiv;  
    	                } else {  
    	                    return null;  
    	                }  
    	  
    	            }  
    	        };  
    	        raceGrid.setShowRecordComponents(true);          
    	        raceGrid.setShowRecordComponentsByCell(true);  
    	       
    	  
    	   
           
       
            
            raceGrid.setDataSource(RaceData.getInstance());
            raceGrid.setAutoFetchData(true);
            raceGrid.setDataPageSize(5);
            raceGrid.setDrawAllMaxCells(5);
            raceGrid.setCanResizeFields(false);  
            raceGrid.getCanMultiSort();
            raceGrid.getCanSort();
            raceGrid.setSize("580","250");
            raceGrid.setCellPadding(5);
            raceGrid.setCellHeight(20);
            raceGrid.setDataFetchMode(FetchMode.PAGED);
            raceGrid.setAlign(Alignment.CENTER);
            
           
            
           raceGrid.setFields(raceIdField, typeField, membersField, distanceField, friendsField,buttonsField);
            
            raceGrid.addRecordClickHandler(new RecordClickHandler(){
      		@Override
      		public void onRecordClick(RecordClickEvent event) {
      			
      			 SC.say("Click Record  : " + event.getRecord().getAttribute("members")+event.getRecord().getAttribute("date")+event.getRecord().getAttribute("friends"));
      			
      		}
            });
            
            
    		initWidget(raceGrid);
    		
    		
    		
    		
    		
    	}
    
    	
    }
Working...
X