Announcement

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

    Grid Selection: Gets lost when saving form in 'Server' ds, but not with 'local' ds

    In the following example I have two datasources, one is a client only 'Testdatasource' and one is a mysql datasource. When editing and saving a record in the form, the selection in the grid gets lost with the mysql datasource but not with the local datasource. I would love to see selection kept also for mysql datasources.

    Tested on SmartClient Version: SC_SNAPSHOT-2010-12-14/PowerEdition Deployment (built 2010-12-14) with GWT 2.1.0 and firefox 3.6.13

    Form and grid code:

    Code:
    package test.client;
    
    import com.google.gwt.core.client.EntryPoint;
    import com.smartgwt.client.data.DataSource;
    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.form.DynamicForm;
    import com.smartgwt.client.widgets.grid.ListGrid;
    import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
    import com.smartgwt.client.widgets.grid.events.SelectionEvent;
    import com.smartgwt.client.widgets.layout.HLayout;
    import com.smartgwt.client.widgets.layout.VLayout;
    
    public class SelectionTest implements EntryPoint {
    
    	@Override
    	public void onModuleLoad() {
    		
    		//First ds: will keep selection
    		//DataSource dataSource = CustomerLocalDs.getInstance();
    		
    		//Second ds: will throw away selection
    		DataSource dataSource = DataSource.get("Customer");
    		
    		final ListGrid listGrid = new ListGrid();
    		listGrid.setWidth100();
    		listGrid.setShowResizeBar(true);
    		listGrid.setCanEdit(true);
    		listGrid.setCanPickFields(true);
    		listGrid.setDataSource(dataSource);
    		listGrid.fetchData();
    
    		final DynamicForm form = new DynamicForm();
    		form.setDataSource(dataSource);
    		listGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
    			@Override
    			public void onSelectionChanged(SelectionEvent event) {
    				form.editSelectedData(listGrid);
    			}
    		});
    
    		IButton save = new IButton("Save");
    		save.addClickHandler(new ClickHandler() {
    			public void onClick(ClickEvent event) {
    				form.saveData();
    			}
    		});
    
    		IButton doNew = new IButton("New");
    		doNew.addClickHandler(new ClickHandler() {
    			public void onClick(ClickEvent event) {
    				form.editNewRecord();
    			}
    		});
    		
    		VLayout layout = new VLayout();
    		layout.addMember(listGrid);
    		layout.addMember(form);
    		HLayout hlayout = new HLayout();
    		hlayout.addMember(save);
    		hlayout.addMember(doNew);
    
    		layout.addMember(hlayout);
    		layout.setHeight100();
    		layout.setWidth100();
    		layout.draw();
    	}
    
    }
    Client ds:
    Code:
    package test.client;
    
    import com.smartgwt.client.data.DSRequest;
    import com.smartgwt.client.data.DataSource;
    import com.smartgwt.client.data.fields.*;
    import com.smartgwt.client.widgets.form.validator.FloatPrecisionValidator;
    import com.smartgwt.client.widgets.form.validator.FloatRangeValidator;
    
    public class CustomerLocalDs extends DataSource {
    
        private static CustomerLocalDs instance = null;
    
        public static CustomerLocalDs getInstance() {
            if (instance == null) {
                instance = new CustomerLocalDs("customerLocalDs");
            }
            return instance;
        }
    
        public CustomerLocalDs(String id) {
    
            setID(id);
            DataSourceIntegerField pkField = new DataSourceIntegerField("cstm_pk");
            pkField.setHidden(true);
            pkField.setPrimaryKey(true);
            DataSourceTextField nameField = new DataSourceTextField("cstm_name", "Name", 128, true);
    
            setFields(pkField, nameField);
            setClientOnly(true);
            setTestData(CustomerData.getRecords());
        }
    }
    Code:
    package test.client;
    
    public class CustomerData {
    
        private static CustomerRecord[] records;
    
        public static CustomerRecord[] getRecords() {
            if (records == null) {
                records = getNewRecords();
            }
            return records;
        }
    
        public static CustomerRecord[] getNewRecords() {
            return new CustomerRecord[]{
                    new CustomerRecord(1, "Glue Pelikan Roll-fix Permanent #950"),
                   	new CustomerRecord(2, "Glue Pelikan Roll-fix Refill Permanent #955"),  
                    new CustomerRecord(3, "Glue Pelikan Roll-fix Non Permanent #960"),
                    new CustomerRecord(4, "Glue Pelikan Roll-fix Refill Non Permanent #965")
            };
        }
    }
    Code:
    package test.client;
    
    import com.smartgwt.client.widgets.grid.ListGridRecord;
    
    import java.util.Date;
    
    public class CustomerRecord extends ListGridRecord {
    
        public CustomerRecord() {
        }
    
        public CustomerRecord(int cstm_pk, String cstm_name ){
        	setCstm_pk(cstm_pk);
        	setCstm_name(cstm_name);    
        }
    
        /**
         * Set the itemID.
         *
         * @param itemID the itemID
         */
        public void setCstm_pk(int cstm_pk) {
            setAttribute("cstm_pk", cstm_pk);
        }
    
        /**
         * Return the itemID.
         *
         * @return the itemID
         */
        public int getCstm_pk() {
            return getAttributeAsInt("cstm_pk");
        }
    
    
        /**
         * Set the item.
         *
         * @param item the item
         */
        public void setCstm_name(String cstm_name) {
            setAttribute("cstm_name", cstm_name);
        }
    
        /**
         * Return the item.
         *
         * @return the item
         */
        public String getCstm_name() {
            return getAttribute("cstm_name");
        }
    
    }

    Server ds:

    Code:
    <DataSource 
    	serverType="sql"
    	dbName="Mysql"
    	tableName="Customer"
    	ID="Customer"
    >
    	<fields>
    		<field primaryKey="true" type="sequence" name="cstm_pk" hidden="true"></field>
    		<field type="text" length="45" name="cstm_name" title="" required="true" export="true"></field>
    	</fields>
    </DataSource>

    #2
    I have same problem ...

    Comment


      #3
      Any news on this?

      Comment

      Working...
      X