Announcement

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

    Cell selection vanish after startEditing

    Hi,

    it is a matter of cell editing and cell selection.

    If I start editing with a double click and press the Enter key, the selection stay in the cell.

    BUT.

    If I start editing with another key (but neither Ctrl nor arrow key) by startEditing(rowNum, colNum, suppressFocus) and then press the Enter key, the selection vanish and I need to set a new one.

    What can I do?

    I adapted example from Showcase:

    Code:
    package com.smartgwt.sample.showcase.client.grid.editing;
    
    import com.google.gwt.i18n.client.NumberFormat;
    import com.smartgwt.client.types.Alignment;
    import com.smartgwt.client.types.ListGridEditEvent;
    import com.smartgwt.client.types.ListGridFieldType;
    import com.smartgwt.client.types.SelectionStyle;
    import com.smartgwt.client.types.SortArrow;
    import com.smartgwt.client.widgets.Canvas;
    import com.smartgwt.client.widgets.events.KeyDownEvent;
    import com.smartgwt.client.widgets.events.KeyDownHandler;
    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.sample.showcase.client.PanelFactory;
    import com.smartgwt.sample.showcase.client.ShowcasePanel;
    import com.smartgwt.sample.showcase.client.data.CountryXmlDS;
    
    public class GridEditByCellSample extends ShowcasePanel {
        private static final String DESCRIPTION =
            "<p><b>Click</b> on any cell to start editing. Use <b>Tab</b>, <b>Shift-Tab</b>,"
                + "<b>Up Arrow</b>, and <b>Down Arrow</b> to move between cells.</p><p>Press <b>Enter</b> to save the current row"
                + "and dismiss the editors, or <b>Esc</b> to discard changes for the current cell and dismiss"
                + "the editors.</p>";
    
        public static class Factory implements PanelFactory {
            private String id;
    
            public Canvas create() {
                GridEditByCellSample panel = new GridEditByCellSample();
                id = panel.getID();
                return panel;
            }
    
            public String getID() {
                return id;
            }
    
            public String getDescription() {
                return DESCRIPTION;
            }
        }
    
        public Canvas getViewPanel() {
    
            final ListGrid countryGrid = new ListGrid();
            countryGrid.setWidth(550);
            countryGrid.setHeight(224);
            countryGrid.setShowAllRecords(true);
            countryGrid.setCellHeight(22);
    
            // use server-side dataSource so edits are retained across page transitions
            countryGrid.setDataSource(CountryXmlDS.getInstance());
    
            ListGridField countryCodeField = new ListGridField("countryCode", "Flag", 40);
            countryCodeField.setAlign(Alignment.CENTER);
            countryCodeField.setType(ListGridFieldType.IMAGE);
            countryCodeField.setImageURLPrefix("flags/16/");
            countryCodeField.setImageURLSuffix(".png");
            countryCodeField.setCanEdit(false);
    
            ListGridField nameField = new ListGridField("countryName", "Country");
            ListGridField continentField = new ListGridField("continent", "Continent");
            ListGridField memberG8Field = new ListGridField("member_g8", "Member G8");
            ListGridField populationField = new ListGridField("population", "Population");
            populationField.setType(ListGridFieldType.INTEGER);
            populationField.setCellFormatter(new CellFormatter() {
                    public String format(final Object value, final ListGridRecord record, final int rowNum,
                            final int colNum) {
                        if (value == null) {
                            return null;
                        }
    
                        try {
                            NumberFormat nf = NumberFormat.getFormat("0,000");
                            return nf.format(((Number) value).longValue());
                        } catch (Exception e) {
                            return value.toString();
                        }
                    }
                });
    
            ListGridField independenceField = new ListGridField("independence", "Independence");
    countryGrid.setFields(countryCodeField, nameField, continentField, memberG8Field, populationField, independenceField);
    
            countryGrid.setAutoFetchData(true);
            countryGrid.setCanEdit(true);
    
            countryGrid.setSelectionType(SelectionStyle.MULTIPLE);
            countryGrid.setCanDragSelect(true);
    
            countryGrid.setCanFreezeFields(true);
            countryGrid.setShowRecordComponents(true);
            countryGrid.setShowRecordComponentsByCell(true);
            countryGrid.setCanSelectCells(true);
            countryGrid.setEditEvent(ListGridEditEvent.DOUBLECLICK);
            countryGrid.setEditByCell(true);
    
            countryGrid.addKeyDownHandler(new KeyDownHandler() {
    
                    @Override
                    public void onKeyDown(final KeyDownEvent event) {
                        int[][] selectedCells = grid.getCellSelection().getSelectedCells();
    
                        System.out.println();
    
                        int[] tmp = selectedCells[0];
                        grid.startEditing(tmp[0], tmp[1], false);
                    }
                });
    
            return countryGrid;
        }
    
        public String getIntro() {
            return DESCRIPTION;
        }
    
    }
    Thank you in advance,
    - sipungora
    Last edited by sipungora; 19 Aug 2013, 08:21.
Working...
X