Как перезагрузить строки данных в сетке GXT? - PullRequest
3 голосов
/ 09 февраля 2011

Предполагая, что данные извлекаются из хранилища данных с помощью RPCproxy, при открытии страницы заполняются в сетку с помощью ListStore.

Затем существует форма для добавления объекта, и после изменения она будет отображать новый список в сетке GXT с новой добавленной строкой.

Как можно перезагрузить сетку?Я попробовал метод .reconfigure () в Grid, но он не работал.

Ответы [ 2 ]

4 голосов
/ 09 февраля 2011

grid.getStore () getLoader () нагрузки ();..

Обновление:

Прежде всего вы должны извлечь Grid перед прокси, а во-вторых, изменить свой обратный вызов RPC:

 
    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);

    }
} 
1 голос
/ 20 июня 2011

Чтобы отобразить новые данные в сетке, вам действительно нужно перезагрузить сетку?Вы можете создать новый объект модели с новыми данными и добавить его в ListStore.

Предположим, у вас есть CommentModel, который расширяет BaseModel, и ListStore of Comment.

commentService - это AsyncService.

Теперь, если пользователь оставит комментарий, просто создайте новый объект CommentModel с новыми данными

CommentModel newData = new CommentModel('user name', 'message','date');

И добавьте это в магазин комментариев.

commentStore.add(newData);

Надеюсь, это послужит вам цели.

Но если вам действительно нужно перезагрузить весь набор данных, позвоните в службу еще раз.В методе onSuccess сначала очистите commentStore, затем добавьте результат.Помните, что это занимает больше времени, чем первый подход.

...