如果您在SmartGWT中创建自定义DataSource,是否可以删除字段过滤器而不是将其完全隐藏在网格列中?
如下所示:
国家/地区代码字段存在,但在上图中隐藏。
澄清:我想在开始时隐藏国家/地区代码字段,但仍然可以在列上下文菜单中看到它。如果您使用setHidden(true)
,该字段将从上方的列菜单中消失。
示例代码:
public class MyDataSource extends DataSource {
public MyDataSource() {
DataSourceField countryField = new DataSourceIntegerField("country", "Country code");
// TODO Find a method that disables the filter, aka hides but not removes the field from the grid.
countryField.setHidden(true); // Completely hides/removes the field, not desireable.
countryField.setCanFilter(true); // Doesn't seem to change anything.
addField(countryField);
// Other fields...
}
}
如何在具有上述DataSource的ListGrid中实现这一目标?
答案 0 :(得分:1)
我不确定我是否完全理解这个问题。
您是否正在寻找 隐藏 Columns 上下文菜单中“国家/地区代码”选项的方法?你可以通过声明来做到这一点
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);
修改强>
因此,不要在数据源中设置隐藏属性,而是直接设置为ListGridField
。
数据源
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);
这应该可以解决问题。