GXT 3.1.0 - 网格标题中缺少排序下拉列表

时间:2014-07-23 16:21:59

标签: gwt gxt

下面的代码会创建2个标签。 每个选项卡都有一个包含1列的网格。 在第一个选项卡中,表头显示带有隐藏/显示列和排序的下拉列表。 在第二个选项卡中,表头中缺少下拉列表。

我做错了什么? 感谢

public void onModuleLoad()
{
    Grid table1 = createTable();
    Grid table2 = createTable();

    TabPanel tabPanel = new TabPanel();
    tabPanel.add(table1, "Grid 1");
    tabPanel.add(table2, "Grid 2");

    RootLayoutPanel.get().add(tabPanel);
}

Grid createTable()
{
    ColumnConfig<HashMap, String> nameCol = new ColumnConfig<HashMap, String>(

    new ValueProvider<HashMap, String>()
    {
        @Override
        public String getValue(HashMap object)
        {
            return (String) object.get("COL1");
        }

        @Override
        public void setValue(HashMap object, String value)
        {
            object.put("COL1", value);
        }

        @Override
        public String getPath()
        {
            // TODO Auto-generated method stub
            return "1";
        }

    }, 200, SafeHtmlUtils.fromTrustedString("<b>Column 1</b>"));

    List<ColumnConfig<HashMap, ?>> l = new ArrayList<ColumnConfig<HashMap, ?>>();
    l.add(nameCol);
    ColumnModel<HashMap> cm = new ColumnModel<HashMap>(l);

    ModelKeyProvider<HashMap> modelKeyProvider = new ModelKeyProvider<HashMap>()
    {
        @Override
        public String getKey(HashMap item)
        {
            return (String) item.get("COL1");
        }
    };

    ListStore<HashMap> store = new ListStore<HashMap>(modelKeyProvider);
    store.addAll(getStocks());

    Grid table = new Grid(store, cm);

    return table;
}

public static List<HashMap> getStocks()
{
    List<HashMap> stocks = new ArrayList<HashMap>();

    for (int i = 0; i < 1000; i++)
    {
        HashMap hashMap = new HashMap();
        hashMap.put("COL1", "Line: " + i);

        stocks.add(hashMap);
    }
    return stocks;
}

1 个答案:

答案 0 :(得分:1)

看起来带下拉列表的小按钮的高度为0。它必须是因为它在一个不可见的标签内。

刷新标题解决了这个问题。

TabPanel tabPanel = new TabPanel();
tabPanel.addSelectionHandler(new SelectionHandler<Widget>()
{
    @Override
    public void onSelection(SelectionEvent<Widget> event)
    {
        if(table1.getView() != null && table1.getView().getHeader() != null)
            table1.getView().getHeader().refresh();
    }
});