How to reload data rows in GXT grid?

Lynard picture Lynard · Feb 9, 2011 · Viewed 12.9k times · Source

Assuming that data retrieves from DataStore using RPCproxy, populate to grid using ListStore upon opening the page.

Then, there's a form to add an entity and after modification it will reflect the new list in GXT grid with the new added row.

How can reload the grid? I tried .reconfigure() method in Grid but didn't work.

Answer

kospiotr picture kospiotr · Feb 9, 2011

grid.getStore().getLoader().load();

update:

First of all you must extract Grid before your Proxy, and the second thing is to change your RPC callback:

 
    public class PagingBeanModelGridExample extends LayoutContainer {  

    //put grid Class outside a method or declare it as a final on the begin of a method
    Grid grid = null;

    protected void onRender(Element parent, int index) {
        super.onRender(parent, index);

        RpcProxy> proxy = new RpcProxy>() {

            @Override
            public void load(Object loadConfig, final AsyncCallback> callback) {
                //modification here - look that callback is overriden not passed through!!
                service.getBeanPosts((PagingLoadConfig) loadConfig, new AsyncCallback>() {

                    public void onFailure(Throwable caught) {
                        callback.onFailure(caught);
                    }

                    public void onSuccess(PagingLoadResult result) {
                        callback.onSuccess(result);
                        //here you are reloading store
                        grid.getStore().getLoader().load();
                    }
                });
            }
        };

        // loader  
        final BasePagingLoader> loader = new BasePagingLoader>(proxy, new BeanModelReader());

        ListStore store = new ListStore(loader);
        List columns = new ArrayList();
        //...  
        ColumnModel cm = new ColumnModel(columns);

        grid = new Grid(store, cm);
        add(grid);

    }
}