Получение видимых столбцов в SmartGWT ListGrid
Я пытаюсь получить количество видимых столбцов в ListGrid и столкнулся с той же проблемой в этом вопросе:
Однако это не работает. Вот мой код:-
ListGridField firstName=new ListGridField("firstName","First Name");
ListGridField lastName=new ListGridField("lastName","Last Name");
ListGridField companyName=new ListGridField("companyName","Company Name");
ListGridField companyNameHidden=new ListGridField("companyNameHidden","Company Name");
firstName.setWidth(200);
lastName.setWidth(200);
companyName.setWidth(200);
companyNameHidden.setWidth(200);
companyNameHidden.setHidden(true);
listGrid.setFields(firstName,lastName,companyName,companyNameHidden);
for(ListGridField fieldName:listGrid.getFields()){
System.out.println(fieldName.getName()+"======="+listGrid.fieldIsVisible(fieldName.getName()));
}
Выход:
ПгвЬЫате ======= правда
LastName ======= правда
COMPANYNAME ======= правда
companyNameHidden ======= правда
Разве это не должно быть ложным для последнего. Поле явно скрыто. Подскажите, пожалуйста, как найти количество видимых полей в ListGrid.
2 ответа
Вам нужно нарисовать сетку списка, прежде чем попросить ее сообщить, видны ли ее поля. В некотором смысле имеет смысл, поскольку, если элемент не отрисован, видимое состояние не определено - может / должно вернуть false IMO, но при реализации платформы возвращает true. Если вы добавите: listGrid.draw()
перед циклом for вы увидите, что companyNameHidden даже не распечатывается, потому что, очевидно, getFields возвращает только видимые поля после того, как сетка нарисована. Вы можете просто использовать listGrid.fieldIsVisible(companyNameHidden.getName())
, если вы заинтересованы в конкретной области.
Попробуй с fieldName.getHidden()
вместо listGrid.fieldIsVisible(...)
,