0

将 GXT 2.2.5 与 GWT 2.3.0 一起使用...

这把我难住了。我有一个 RpcProxy 检索要显示在 ComboBox 上供用户选择的项目列表。我在 ComboBox 旁边还有一个按钮,允许用户创建一个新项目。该按钮打开一个窗口,用户在其中输入信息,然后将新项目添加到数据库中。

我想要发生的是,当用户在操作结束时关闭窗口时,ComboBox 会自动选择新项目。我通过它的 ID 识别新项目,它通过 ComboBox 传递回容器。

首先,我尝试简单地设置 ComboBox 值:

Item item = comboBox.getStore().findModel("id", id);
if (item != null)
{
  comboBox.setValue(item);
}

那没有用;据我所知,ComboBox 没有重新加载数据,因此不存在可供选择的新项目。

因此,接下来我尝试在选择之前重新加载商店:

comboBox.getStore().getLoader().load();
Item item = comboBox.getStore().findModel("id", id);
if (item != null)
{
  comboBox.setValue(item);
}

那也没有用;该值仍未被选中。

最后,我尝试创建一个临时 LoadListener 以确保在进行选择之前重新加载商店:

LoadListener listener = new LoadListener()
{
  @Override
  public void loaderLoad(LoadEvent le)
  {
    super.loaderLoad(le);
    Item item = comboBox.getStore().findModel("id", id);
    if (item != null)
    {
      comboBox.setValue(item);
    }
  }
};
comboBox.getStore().getLoader().addLoadListener(listener);
comboBox.getStore().getLoader().load();
comboBox.getStore().getLoader().removeLoadListener(listener);

仍然没有喜悦。一些检查显示甚至没有调用侦听器。

我做错了什么,我该如何解决?

4

2 回答 2

0

您是否尝试过设置combobox.setUseQueryCache(false);每次重新加载组合框?

于 2013-04-02T09:28:08.423 回答
0

在 storeDataChanged 方法中使用 store 监听器 https://www.sencha.com/forum/showthread.php?73979-How-to-manually-select-an-item-(combobox)

store.addStoreListener(new StoreListener<BeanModel>(){
        @Override
        public void storeDataChanged(StoreEvent<BeanModel> se) {                
            super.storeDataChanged(se);         

            BeanModel item = se.getStore().findModel("id", id);
            if(item != null){
                //grid.getSelectionModel().select(item, false);
                comboBox.setValue(item);
            }

        }
    });
于 2015-06-25T00:48:11.040 回答