2014-10-30 2 views
2

Я пытаюсь получить количество видимых колонок в ListGrid и наткнулись на такую ​​же проблему в этом question: -Попадая видимые столбцы в SmartGWT 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 ===== == true
companyNameHidden ======= true

Не должно быть ложным для последнего. Поле явно скрыто. Пожалуйста, предложите, как найти количество видимых полей в ListGrid.

ответ

2

Вам необходимо нарисовать список, прежде чем вы попросите его рассказать вам, если его поля видны. Вид имеет смысл, поскольку, если элемент не нарисован, видимое состояние не определено - может/должно возвращать false IMO, но оно возвращает true при реализации фреймворка. Если вы добавите: listGrid.draw() перед циклом for, вы увидите, что компания NameHidden даже не распечатана, потому что, по-видимому, getFields возвращает только видимые поля после рисования сетки. Вы можете просто использовать listGrid.fieldIsVisible(companyNameHidden.getName()), если вас интересует конкретное поле.

+0

Спасибо! Это сработало. Вы думаете, что он должен возвращать false для каждого поля, поскольку ничего не нарисовано. В любом случае, я использовал getAllFields, который вернет, ну, все поля (скрытые тоже). –

0

Попробуйте с fieldName.getHidden() вместо listGrid.fieldIsVisible(...).

+0

'ListGridField' не имеет метода' getHidden'. –

+0

Какую версию smartgwt вы используете? Последние имеют: http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/widgets/grid/ListGridField.html#getHidden() –