Сделал grid (ext-gwt), с remote пагинацией, как в примере
http://www.sencha.com/examples/pages/grid/paging.html, все работает.
Моя грид
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
public class PeopleGrid extends extends LayoutContainer {
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
final MyServiceAsync service = MyService.App.getInstance();
RpcProxy<PagingLoadResult<Entity>> proxy = new RpcProxy<PagingLoadResult<Entity>>() {
@Override
public void load(Object loadConfig, AsyncCallback<PagingLoadResult<Entity>> callback) {
service.getPeople((PagingLoadConfig) loadConfig, callback);
}
};
loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy);
loader.setRemoteSort(true);
ListStore<Entity> people = new ListStore<Entity>(loader);
final PagingToolBar toolBar = new PagingToolBar(10);
toolBar.bind(loader);
List<ColumnConfig> configs = getColumnConfigs();
ColumnModel cm = new ColumnModel(configs);
final Grid<Entity> grid = new Grid<Entity>(people, cm);
grid.setStateful(true);
grid.addListener(Events.Attach, new Listener<GridEvent<Entity>>() {
public void handleEvent(GridEvent<Entity> be) {
PagingLoadConfig config = new BasePagingLoadConfig();
config.setOffset(0);
config.setLimit(10);
Map<String, Object> state = grid.getState();
if (state.containsKey("offset")) {
int offset = (Integer) state.get("offset");
int limit = (Integer) state.get("limit");
config.setOffset(offset);
config.setLimit(limit);
}
loader.load(config);
}
});
grid.setLoadMask(true);
grid.setBorders(true);
grid.setAutoExpandColumn("name");
grid.setStyleAttribute("borderTop", "none");
grid.setStripeRows(true);
ContentPanel cp = createPanel();
cp.add(grid);
cp.setBottomComponent(toolBar);
add(cp);
}
private List<ColumnConfig> getColumnConfigs() {
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
configs.add(new ColumnConfig("name", "Имя", 300));
ColumnConfig lastNameColumn = new ColumnConfig("lastName", "Фамилия", 200);
configs.add(lastNameColumn);
return configs;
}
private ContentPanel createPanel() {
ContentPanel panel = new ContentPanel();
panel.setBodyBorder(false);
panel.setHeading("Люди");
panel.setButtonAlign(Style.HorizontalAlignment.CENTER);
panel.setLayout(new FitLayout());
panel.setSize(500, 250);
return cp;
}
Вызов грида
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
private Window createAccordionWindow() {
final Window w = new Window();
w.setWidth(845);
w.setHeight(650);
w.setLayout(new AccordionLayout());
ContentPanel cp = new ContentPanel();
cp.setAnimCollapse(false);
cp.setScrollMode(Scroll.AUTO);
cp.add(new PeopleGrid());
w.add(cp);
return w;
}
Как я уже говорил грид работает на отлично, вот не могу только сделать так чтобы при изменении размеров окна, грид автоматически растягивался, т.е. подгонялся под размеры окна,т.е. чтобы колонки автоматически пропорционально растягивались,
(вот как тут вот
http://www.sencha.com/examples/desktop.html)
не получается у меня с этим, помогите пожалуйста.