Метод getRowCount() гибкой таблицы Gwt не возвращает текущее значение
Я использую GWTFlexTable
и есть одна проблема: я удаляю любую строку после этого, когда я пытаюсь добавить новую строку, это дает rowcount
значение, включая удаленную строку, из-за этого при выполнении итерации последней строки IndexOutOfBoundsException
,
for( count=0; count < table.getRowCount(); count++ )
{
}
Давая это исключение
[FATAL] Uncaught Exception:
[java] java.lang.IndexOutOfBoundsException:
[java] Column index: 0, Column size: 0
2 ответа
Если вы используете кнопку для удаления строки.. напишите обработчик щелчка при удалении перикулярной строки.
Button removeSelectedRow = new Button();
removeSelectedRow.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int rowIndex = flexTable.getCellForEvent(event).getRowIndex();
flexTable.removeRow(rowIndex);
}
});
Не используйте rowCount().
используйте как это getRowIndex() позиция. Это поможет удалить строку, которую он может представить в любом порядке, в любой позиции или в любом месте на вашей странице. это ваша потребность?
Пожалуйста, ознакомьтесь с демонстрацией GWT Showcase - FlexTable.
Вот код для добавления / удаления строки непосредственно из витрины. Используйте эти методы для выполнения этих операций. Всегда проверяйте количество строк, прежде чем выполнять какие-либо операции.
/**
* Add a row to the flex table.
*/
private void addRow(FlexTable flexTable) {
int numRows = flexTable.getRowCount();
flexTable.setWidget(numRows, 0, widget1));
flexTable.setWidget(numRows, 1, widget2));
flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows + 1);
}
/**
* Remove a row from the flex table.
*/
private void removeRow(FlexTable flexTable) {
int numRows = flexTable.getRowCount();
if (numRows > 1) {
flexTable.removeRow(numRows - 1);
flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows - 1);
}
}