Я не уверен, что полностью понял вопрос.
Вы ищете способ скрыть параметр "Код страны" в контекстном меню Столбцы ? Вы можете сделать это, объявив
ListGridField.setCanHide(false)
до соответствующего ListGridField.
ListGridField countryCode = new ListGridField("countryCode");
countryCode.setHidden(true);
countryCode.setCanHide(false); // won't be shown in the context menu
Или вы пытаетесь отключить фильтрацию ?
Если это так, должен ли пользователь в некоторых случаях видеть столбец кода страны?
Если нет, вы можете просто оставить MyDataSource
как есть и определить только те ListGridFields
, которые вы хотите, чтобы пользователь видел.
ListGrid grid = new ListGrid();
ListGridField country = new ListGridField("country");
ListGridField capital = new ListGridField("capital");
ListGridField continent = new ListGridField("continent");
// no countryCode here
grid.setFields(country, capital, continent);
Базовый атрибут кода страны все еще доступен в коде, например. через record.getAttribute("countryCode");
, он просто не отображается в ListGrid.
Кроме того, вы можете определить фильтрацию на уровне сетки с помощью ListGridField.canFilter(Boolean canFilter)
.
ListGridField countryCode = new ListGridField("countryCode ");
countryCode.setCanFilter(false);
EDIT:
Итак, не устанавливайте скрытый атрибут в источнике данных, а вместо этого непосредственно к ListGridField
.
DataSource
public class MyDataSource extends DataSource {
public MyDataSource() {
DataSourceField countryCode = new DataSourceStringField("countryCode", "Country code");
DataSourceField country = new DataSourceStringField("country", "Country");
DataSourceField capital = new DataSourceStringField("capital", "Capital");
DataSourceField continent = new DataSourceStringField("continent", "Continent");
setFields(countryCode, country, capital, continent);
}
}
ListGrid
ListGrid grid = new ListGrid();
ListGridField countryCode = new ListGridField("countryCode");
countryCode.setHidden(true);
countryCode.setCanHide(true); // I don't think this is even necessary.
ListGridField country = new ListGridField("country");
ListGridField capital = new ListGridField("capital");
ListGridField continent = new ListGridField("continent");
grid.setFields(countryCode, country, capital, continent);
Это должно сработать.