Отображение ListGrid с самого начала со всеми развернутыми строками

Я использую SmartGWT 2.5.

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

Я попытался добавить прослушиватель, содержащий следующий код:

ListGridRecord[] records = getRecords();
for (ListGridRecord rec : records) {
    expandRecord(rec);
}

Я пытался с DataArrivedHandler и DrawAreaChangedHandler, но я просто получаю ошибки javascript на стороне клиента или расширяются только части строк. Как я могу это исправить?


person OOEngineer    schedule 02.01.2013    source источник


Ответы (3)


Если вы говорите о Grid Grouping, то вы можете использовать следующее:

grid.setGroupStartOpen(GroupStartOpen.ALL);
person RAS    schedule 04.01.2013
comment
Нет, я говорю о расширении рядов. Визуально вы получаете стрелку рядом с каждой строкой, которая позволяет открывать подэлемент при нажатии на него, следуя шаблону master-detail. - person OOEngineer; 07.01.2013

listGrid.addDataArrivedHandler(new DataArrivedHandler() {
        @Override
        public void onDataArrived(DataArrivedEvent event) {
            for (ListGridRecord rec : listGrid.getRecords()) {
                listGrid.expandRecord(rec);
            }
        }
    });

Должно работать (работало с предыдущими версиями..) Какую ошибку вы получаете?

person Alain BUFERNE    schedule 10.01.2013
comment
У меня есть основная сетка, у которой есть другие сетки в качестве компонентов расширения. При тестировании основной сетки с двумя строками расширяется только последняя строка. Когда я добавляю код в сетки расширения, я получаю эту ошибку: com.google.gwt.event.shared.UmbrellaException: перехвачено одно или несколько исключений, см. полный набор в UmbrellaException#getCauses на com.google.gwt.event.shared .HandlerManager.fireEvent(HandlerManager.java:129) [...] Вызвано: com.google.gwt.core.client.JavaScriptException: (TypeError): this.body не определено в com.google.gwt.dev.shell .BrowserChannelServer.invokeJavascript(BrowserChannelServer.ja - person OOEngineer; 11.01.2013
comment
Для первой точки (расширена только последняя строка) вы установилиCanExpandMultipleRecords(Boolean canExpandMultipleRecords)? для второй точки (ошибка) вы можете поставить точку останова в Eclipse на зонтичном исключении (я не помню, как...) вы уверены, что компоненты сетки расширения уже существуют, прежде чем пытаться их расширить... - person Alain BUFERNE; 11.01.2013
comment
Я не устанавливал флаг expandmultiple, но, кажется, он установлен по умолчанию, поскольку пользователи уже могли вручную расширять несколько строк. Но да, похоже, что сама сетка и ее компоненты расширения еще не полностью построены на момент возникновения события. Вот почему мне пришлось поставить таймер в качестве обходного пути... - person OOEngineer; 14.01.2013

Хорошо, наконец, я установил таймер на 100 мс в каждом обработчике. Проблема заключалась в том, что была задержка перед полным созданием компонентов (то, что я хочу отобразить, довольно сложно), и поэтому, когда обработчик был вызван, еще не все было на месте...

person OOEngineer    schedule 11.01.2013