i also need to know how to refresh a row with specific Object On Nov 19, 10:35 am, Tomeo <tke...@gmail.com> wrote: > Hi folks, > > I have a below a simple scenario: > > 1. I have a grid populated with data > 2. I select any 1 row from grid - data with a specific "Object > Id" [internal id] > 3. I press a refresh button from a paginationToolbar > 4. data are refreshed > 5. no row from grid is being selected. > > Question 1: > How can I change a step 5, so after refresh a row with specific Object > Id (from step 2) would be automaticaly selected? > > I tried to implement a LoadListener to loader, but it seems like I'm > incorrectly selecting a row from my grid. > Here is a bit of my code: > > 1. A global variable of type "Zakazka" to store a Zakazka before > refresh occures (the one which should be selected after refresh): > Code: > > private Zakazka selectedZakazka; > > 2. Here is my grid definition with loader's load listener > Code: > > RpcProxy<PagingLoadResult<Zakazka>> proxy = new > RpcProxy<PagingLoadResult<Zakazka>>() { > @Override > public void load(Object loadConfig, > AsyncCallback<PagingLoadResult<Zakazka>> callback) { > Tracing.Log("ZakazkyAktivne.RpcProxy.load.before"); > service.getZakazky((PagingLoadConfig) loadConfig, > callback); > Tracing.Log("ZakazkyAktivne.RpcProxy.load.after"); > } > }; > > // loader > final PagingLoader<PagingLoadResult<ModelData>> loader = new > BasePagingLoader<PagingLoadResult<ModelData>>(proxy); > loader.setRemoteSort(true); > > ListStore<Zakazka> store = new ListStore<Zakazka>(loader); > pagingToolBar = new PagingToolBar(50); > pagingToolBar.bind(loader); > > List<ColumnConfig> columns = new ArrayList<ColumnConfig>(); > columns.add(new ColumnConfig("object_id", "Object Id", 80)); > columns.add(new ColumnConfig("cislo_dokladu", "Èíslo dokladu", > 100)); > ColumnConfig created = new ColumnConfig("created", "Dátum > vytvorenia", 105); > created.setDateTimeFormat(DateTimeFormat.getFormat("dd.MM.yyyy > HH:mm:ss")); > columns.add(created); > columns.add(new ColumnConfig("objednavatel", "Objednavatel", > 120)); > columns.add(new ColumnConfig("stredisko", "Stredisko", 150)); > columns.add(new ColumnConfig("stav_zakazky_id", "Id stavu > zakazky", 60)); > columns.add(new ColumnConfig("stav_zakazky_kod", "Kód stavu > zakazky", 100)); > columns.add(new ColumnConfig("stav_zakazky", "Stav zakazky", > 100)); > columns.add(new ColumnConfig("stav_zakazky_zmenil_uziv_meno", > "Zakazku zmìnil", 100)); > ColumnConfig updated = new ColumnConfig("stav_zakazky_zmena", > "Dátum zmìny", 105); > updated.setDateTimeFormat(DateTimeFormat.getFormat("dd.MM.yyyy > HH:mm:ss")); > columns.add(updated); > > ColumnModel cm = new ColumnModel(columns); > > gridZakazka = new Grid<Zakazka>(store, cm); > gridZakazka.setStateId("pagingGridExample"); > gridZakazka.setStateful(true); > gridZakazka.addListener(Events.Attach, new > Listener<GridEvent<Zakazka>>() { > public void handleEvent(GridEvent<Zakazka> be) { > PagingLoadConfig config = new BasePagingLoadConfig(); > config.setOffset(0); > config.setLimit(50); > > Map<String, Object> state = gridZakazka.getState(); > if (state.containsKey("offset")) { > int offset = (Integer)state.get("offset"); > int limit = (Integer)state.get("limit"); > config.setOffset(offset); > config.setLimit(limit); > } > if (state.containsKey("sortField")) { > config.setSortField((String)state.get("sortField")); > > config.setSortDir(SortDir.valueOf((String)state.get("sortDir"))); > } > loader.load(config); > } > }); > > gridZakazka.getSelectionModel().addListener(Events.SelectionChange, > new Listener<SelectionChangedEvent<Zakazka>>() { > public void handleEvent(SelectionChangedEvent<Zakazka> > be) { > if (be.getSelection().size() > 0) { > Tracing.Log("Grid selection changed"); > formBindings.bind((ModelData) > be.getSelection().get(0)); > > setZakazkaDetailToolBar(be.getSelectedItem().getZakazkaObjectId(), > > be.getSelectedItem().getZakazkaStavZakazkyId()); > > // > getLogZakazkaGrid(be.getSelectedItem().getZakazkaObjectId()); > //pagingToolBarLog.refresh(); > } else { > Tracing.Log("Nothing selected"); > formBindings.unbind(); > zakazkaDetailToolBar.removeAll(); > } > } > }); > > loader.addLoadListener(new LoadListener() { > @Override > public void loaderLoad(LoadEvent le) > { > // Run your selection logic here > Tracing.Log("loaderLoad invoked!"); > > gridZakazka.getSelectionModel().select(selectedZakazka, false); > Tracing.Log("selectedZakazka selected"); > } > }); > > gridZakazka.setLoadMask(true); > gridZakazka.setBorders(true); > > 3. Selected zakazka is remembered before refresh using a below code: > Code: > > public void changeZakazkaStatus(Integer zakazkaId, > Integer novyStatusId) { > final DatabaseServiceAsync service = (DatabaseServiceAsync) > Registry.get(Agdoprava.SERVICE); > AsyncCallback<Boolean> callback = new AsyncCallback<Boolean>() { > > public void onFailure(Throwable caught) { > System.out.println(caught.getMessage()); > } > > public void onSuccess(Boolean result) { > if (result) { > Tracing.Log("Zakazka STATUS updated successfully!"); > > selectedZakazka = > gridZakazka.getSelectionModel().getSelectedItem(); > Tracing.Log("Selected zakazka Object ID:" + > selectedZakazka.getZakazkaObjectId()); > > // refresh main grid > pagingToolBar.refresh(); > Tracing.Log("Refresh OK"); > } > else { > Tracing.Log("Zakazka STATUS update failed!"); > } > > } > }; > > // execute RPC > service.updateZakazkaStatus(zakazkaId, novyStatusId, > StaticDataController.LoggedUzivatelId, callback); > > } > > 4. Tracing log > Code: > > 2010-11-19 09:06:13.739| Zakazka STATUS updated successfully! > 2010-11-19 09:06:13.739| Selected zakazka Object ID:123 > 2010-11-19 09:06:14.066| ZakazkyAktivne.RpcProxy.load.before > 2010-11-19 09:06:14.082| ZakazkyAktivne.RpcProxy.load.after > 2010-11-19 09:06:14.082| Refresh OK > ZakazkaManager.getZakazky() > 2010-11-19 09:06:14.436| Nothing selected > 2010-11-19 09:06:14.877| loaderLoad invoked! > 2010-11-19 09:06:14.877| selectedZakazka selected > > From my tracing log I can see, that selectedZakazka is set correctly > and prior refresh and also that loader.LoadListener is invoked after > refresh. Just a row in grid stays unselected. So, I assume a piece of > code in loader's LoadListener [in step 2 above] is incorrect, or > uncomplete. > > Could you please suggest how to correct it, so selectedZakazka will be > also selected after refresh? > > Many thanks, > Tomas
-- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.