You found a bug! We've classified it as EXTGWT-3665 . We encourage you to continue the discussion and to find an acceptable workaround while we work on a permanent fix.
  1. #1
    Sencha User
    Join Date
    Jan 2012
    Posts
    7
    Vote Rating
    0
    jjoe64 is on a distinguished road

      0  

    Default GridRowEditing with LiveGrid: Last row is not editable

    GridRowEditing with LiveGrid: Last row is not editable


    Hi.
    I'm using a Row Editing Grid with Live Grid View (PagingLoader).
    It works fine, but when I start to Edit the last row in the grid, the control buttons (Save, Cancel) are not visible because there have a hidden overflow. And it is not possible to scroll more down to see the buttons.

    Screenshot:
    rowedit-bug.png

    In the official Row Editing Grid example, it works fine, so I think it is a problem with the combination of the Live GridView.
    Can you please help me?

  2. #2
    Sencha User
    Join Date
    Jan 2012
    Posts
    7
    Vote Rating
    0
    jjoe64 is on a distinguished road

      0  

    Default


    Any ideas about that?Is it not reproducible for you?

  3. #3
    Sencha - GXT Dev Team
    Join Date
    Feb 2009
    Location
    Minnesota
    Posts
    2,732
    Vote Rating
    90
    Colin Alworth is a glorious beacon of light Colin Alworth is a glorious beacon of light Colin Alworth is a glorious beacon of light Colin Alworth is a glorious beacon of light Colin Alworth is a glorious beacon of light

      0  

    Default


    Sorry jjoe64, any bug report that doesnt follow the format or at least have a test sample for us to start with gets knocked down in priority over the ones that do or the ones we already have a lead on. If we had team members just sitting bored with nothing to do, we could start going after un-verified and testcase-free bug reports, but quite often we find out that these are issues with the user's application, not with gxt. As it is, we do often have a bug backlog, and debugging screenshots can be pretty tricky.

    I don't doubt that you are having an issue, but please follow the bug template or at least post a test case that clearly demonstrates the issue to have us address it. If you need follow-up right away, please file a support ticket.

  4. #4
    Sencha User
    Join Date
    Jan 2012
    Posts
    7
    Vote Rating
    0
    jjoe64 is on a distinguished road

      0  

    Default more information, with example code to reproduce

    more information, with example code to reproduce


    Required Information


    Version(s) of Ext GWT
    Ext GWT 3.0.1 via maven


    Browser versions and OS
    (and desktop environment, if applicable)
    • Firefox, Windows 7 and Linux
    • Chrome 34, Linux
    Virtual Machine
    No


    Description
    I'm using a Row Editing Grid with Live Grid View (PagingLoader).
    It works fine, but when I start to Edit the last row in the grid, the control buttons (Save, Cancel) are not visible because there have a hidden overflow. And it is not possible to scroll more down to see the buttons.


    Run mode
    both


    Steps to reproduce the problem
    1. Make a Live Grid with GridRowEditing feature
    2. Scroll to the bottom and start editing the last row
    Expected result
    The Buttons should be completely visible


    Actual result
    The Buttons are hidden thus overflow


    Test case
    Client:
    Code:
    import java.util.ArrayList;
    import java.util.List;
    
    
    import com.bosch.hedging.bosch_hedging.client.grids.CounterpartyAccess;
    import com.bosch.hedging.bosch_hedging.shared.dto.CounterpartyDTO;
    import com.google.gwt.core.client.EntryPoint;
    import com.google.gwt.core.client.GWT;
    import com.google.gwt.core.client.Scheduler;
    import com.google.gwt.core.client.Scheduler.ScheduledCommand;
    import com.google.gwt.user.client.rpc.AsyncCallback;
    import com.google.gwt.user.client.ui.IsWidget;
    import com.google.gwt.user.client.ui.RootPanel;
    import com.google.gwt.user.client.ui.Widget;
    import com.sencha.gxt.core.client.resources.ThemeStyles;
    import com.sencha.gxt.data.client.loader.RpcProxy;
    import com.sencha.gxt.data.shared.ListStore;
    import com.sencha.gxt.data.shared.ModelKeyProvider;
    import com.sencha.gxt.data.shared.loader.PagingLoadConfig;
    import com.sencha.gxt.data.shared.loader.PagingLoadResult;
    import com.sencha.gxt.data.shared.loader.PagingLoader;
    import com.sencha.gxt.widget.core.client.FramedPanel;
    import com.sencha.gxt.widget.core.client.Resizable;
    import com.sencha.gxt.widget.core.client.Resizable.Dir;
    import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
    import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
    import com.sencha.gxt.widget.core.client.event.CollapseEvent;
    import com.sencha.gxt.widget.core.client.event.CollapseEvent.CollapseHandler;
    import com.sencha.gxt.widget.core.client.event.ExpandEvent;
    import com.sencha.gxt.widget.core.client.event.ExpandEvent.ExpandHandler;
    import com.sencha.gxt.widget.core.client.form.TextField;
    import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
    import com.sencha.gxt.widget.core.client.grid.ColumnModel;
    import com.sencha.gxt.widget.core.client.grid.Grid;
    import com.sencha.gxt.widget.core.client.grid.LiveGridView;
    import com.sencha.gxt.widget.core.client.grid.LiveToolItem;
    import com.sencha.gxt.widget.core.client.grid.editing.GridRowEditing;
    import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
    
    
    public class Login implements IsWidget, EntryPoint {
        private FramedPanel root;
    
    
        @Override
        public Widget asWidget() {
            if (root == null) {
                final HedgingServiceAsync service = GWT.create(HedgingService.class);
    
    
                RpcProxy<PagingLoadConfig, PagingLoadResult<CounterpartyDTO>> proxy = new RpcProxy<PagingLoadConfig, PagingLoadResult<CounterpartyDTO>>() {
                    @Override
                    public void load(PagingLoadConfig loadConfig, AsyncCallback<PagingLoadResult<CounterpartyDTO>> callback) {
                        service.getPosts(loadConfig, callback);
                    }
                };
    
    
                CounterpartyAccess props = GWT.create(CounterpartyAccess.class);
    
    
                ListStore<CounterpartyDTO> store = new ListStore<CounterpartyDTO>(new ModelKeyProvider<CounterpartyDTO>() {
                    @Override
                    public String getKey(CounterpartyDTO item) {
                        return "" + item.getId();
                    }
                });
    
    
                final PagingLoader<PagingLoadConfig, PagingLoadResult<CounterpartyDTO>> gridLoader = new PagingLoader<PagingLoadConfig, PagingLoadResult<CounterpartyDTO>>(proxy);
                gridLoader.setRemoteSort(true);
    
    
                ColumnConfig<CounterpartyDTO, String> forumColumn = new ColumnConfig<CounterpartyDTO, String>(props.name(), 150, "Name");
    
    
                List<ColumnConfig<CounterpartyDTO, ?>> l = new ArrayList<ColumnConfig<CounterpartyDTO, ?>>();
                l.add(forumColumn);
    
    
                final LiveGridView<CounterpartyDTO> liveGridView = new LiveGridView<CounterpartyDTO>();
                liveGridView.setForceFit(true);
    
    
                ColumnModel<CounterpartyDTO> cm = new ColumnModel<CounterpartyDTO>(l);
    
    
                Grid<CounterpartyDTO> view = new Grid<CounterpartyDTO>(store, cm) {
                    @Override
                    protected void onAfterFirstAttach() {
                        super.onAfterFirstAttach();
                        Scheduler.get().scheduleDeferred(new ScheduledCommand() {
                            @Override
                            public void execute() {
                                gridLoader.load(0, liveGridView.getCacheSize());
                            }
                        });
                    }
                };
    
    
                view.setLoadMask(true);
                view.setLoader(gridLoader);
                view.setView(liveGridView);
    
    
                GridRowEditing<CounterpartyDTO> editing = new GridRowEditing<CounterpartyDTO>(view);
                editing.addEditor(forumColumn, new TextField());
    
    
                root = new FramedPanel();
                root.setCollapsible(true);
                root.setHeadingText("Live Grid Example");
                root.setPixelSize(600, 390);
                root.addStyleName("margin-10");
                final Resizable resizable = new Resizable(root, Dir.E, Dir.SE, Dir.S);
                root.addExpandHandler(new ExpandHandler() {
                    @Override
                    public void onExpand(ExpandEvent event) {
                        resizable.setEnabled(true);
                    }
                });
                root.addCollapseHandler(new CollapseHandler() {
                    @Override
                    public void onCollapse(CollapseEvent event) {
                        resizable.setEnabled(false);
                    }
                });
    
    
                VerticalLayoutContainer con = new VerticalLayoutContainer();
                con.setBorders(true);
                con.add(view, new VerticalLayoutData(1, 1));
    
    
                ToolBar toolBar = new ToolBar();
                toolBar.add(new LiveToolItem(view));
                toolBar.addStyleName(ThemeStyles.get().style().borderTop());
                toolBar.getElement().getStyle().setProperty("borderBottom", "none");
    
    
                con.add(toolBar, new VerticalLayoutData(1, 25));
    
    
                root.setWidget(con);
            }
    
    
            return root;
        }
    
    
        @Override
        public void onModuleLoad() {
            RootPanel.get().add(this);
        }
    }

    Service:
    Code:
        @Override
        public PagingLoadResult<CounterpartyDTO> getPosts(PagingLoadConfig config) {
            List<CounterpartyDTO> list = new ArrayList<CounterpartyDTO>();
            for (int i=0; i<config.getLimit(); i++) {
                CounterpartyDTO dto = new CounterpartyDTO();
                dto.setId(i+config.getOffset());
                dto.setName("aa"+dto.getId());
                list.add(dto);
            }
    
    
            PagingLoadResult<CounterpartyDTO> result = new PagingLoadResultBean<CounterpartyDTO>(list, 500, config.getOffset());
            return result;
        }
    Model:
    Code:
    public class CounterpartyDTO implements Serializable {
        /**
         *
         */
        private static final long serialVersionUID = 1711339223785241846L;
    
    
        private Integer id;
        private String name;
    
    
        public CounterpartyDTO() {
        }
    
    
        public CounterpartyDTO(Integer id2, String name2) {
            id = id2;
            name = name2;
        }
    
    
        public Integer getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
    
    
        public String getName() {
            return name;
        }
    
    
        public void setName(String name) {
            this.name = name;
        }
    
    
    }
    Helpful Information


    Screenshot or video
    • see attachments
    Attached Images

  5. #5
    Sencha - GXT Dev Team
    Join Date
    Jan 2012
    Location
    Arlington, WA
    Posts
    414
    Vote Rating
    15
    branflake2267 will become famous soon enough

      0  

    Default


    Thanks for the report! I have opened a bug in our bug tracker.

  6. #6
    Sencha User
    Join Date
    Jan 2012
    Posts
    7
    Vote Rating
    0
    jjoe64 is on a distinguished road

      0  

    Default


    any news about that bug?
    Can I monitor the status of the bug?