Получение видимых столбцов в 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(...),

Другие вопросы по тегам