Как позволить сетке GXT занимать всю доступную ширину? - PullRequest
6 голосов
/ 12 октября 2010

У меня есть сетка в GXT, что-то вроде этого:

List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig config = new ColumnConfig();
config.setId("type");
config.setHeader("Type");
config.setWidth(50);
configs.add(config);
config = new ColumnConfig();
config.setId("text");
config.setHeader("Info");
config.setWidth(75);
configs.add(config);

columnModel = new ColumnModel(configs);
listStore = new ListStore<DtoModel>();

grid = new Grid<DtoModel>(listStore, columnModel);
grid.setAutoHeight(true);
grid.setAutoWidth(true);

VerticalPanel verticalPanel = new VerticalPanel();
verticalPanel.setLayout(new FillLayout());
verticalPanel.add(grid);

Это создает сетку очень хорошо с одним исключением - ширина ограничена суммой ширины столбца. Когда я отказываюсь от ширины столбца, сетка в конечном итоге имеет ширину 0.

Есть ли способ, чтобы эта сетка и ее столбцы расширялись, чтобы заполнить всю доступную ей область?

Редактировать: Одна из трудностей заключается в том, что метод ColumnConfig.setWidth() принимает только int в качестве параметра, поэтому я не могу указать "100%" в виде строки или чего-то подобного.

Ответы [ 5 ]

7 голосов
/ 12 ноября 2010

Это способ сделать это:

grid.getView().setAutoFill(true);

Вот ключевой момент, который следует помнить: с помощью setAutoFill () при изменении размера столбца gxt всегда изменяет размер всех остальных столбцов, чтобы сетка продолжаласьчтобы соответствовать контейнеру.Без автозаполнения, если вы просто используете столбец autoExpand, если вы измените размер одного столбца, сетка может вырасти больше (или меньше), чем содержащий компонент, и в этом случае вам придется вручную изменить размер сетки, чтобы соответствовать - что не толькоболь, это почти невозможно для конечного пользователя в большинстве случаев.

5 голосов
/ 21 ноября 2012

В GridView есть функция, которая заставляет все столбцы помещаться в доступное пространство. Это все равно, что устанавливать изгиб на 1 для каждого столбца.

grid.getView().setForceFit(true);
3 голосов
/ 14 октября 2010

В GXT Grid есть метод с именем setAutoExpandColumn (), который будет принимать идентификатор столбца, который вы хотите занять все доступное пространство в вашей сетке.Я бы удалил setAutoHeight и setAutoWidth из сетки.

Я не уверен, пытаетесь ли вы получить макет фиксированной ширины или гибкий макет, который будет расширяться в зависимости от высоты / ширины браузера.Вот что я обычно делаю, так как хочу, чтобы мои сетки занимали всю высоту и ширину и прокручивали страницу.Надеюсь, это поможет.

- Винни

    Viewport viewport = new Viewport();
    viewport.setLayout(new BorderLayout());

    ContentPanel center = new ContentPanel();
    center.setFrame(false);
    center.setLayout(new FitLayout());
    center.add(grid);
0 голосов
/ 13 апреля 2011

Может быть, сейчас уже слишком поздно, но я попытался установить для свойств сетки autoHeight и autoWidth значение false, комбинируя его с установкой autoExpandColumn (мне не нужно было изменять значение автозаполнения по умолчанию).

grid.setAutoHeight(false);
grid.setAutoWidth(false);
0 голосов
/ 13 октября 2010

вы можете попробовать стилизовать сетку / столбцы с помощью css (setStyle / setColumnStyleName), а затем вы можете использовать 100% ширины.

cupakob

...