如何在每次点击时重新填充GXT ComboBox?

时间:2013-01-09 14:01:25

标签: database gwt asynchronous collections gxt

我在GXT中使用一个简单的ComboBox从数据库中获取其值。

我想要的是,每次用户点击(展开)ComboBox时,它都会检查并重新填充数据库中的最新条目(如果它们已经更改)。

现在我正在做类似的事情:

ProtocolProperties protocolProperties = GWT.create(ProtocolProperties.class);
final ListStore<ProtocolDto> protocolStore = new ListStore<ProtocolDto>(protocolProperties.id());

protocol = new ComboBox<ProtocolDto>(protocolStore, protocolProperties.name());

    protocol.addExpandHandler(new ExpandHandler() {
                @Override
                public void onExpand(ExpandEvent event) {
                    protocolStore.clear();

                    ProtocolDto emptyDto = new ProtocolDto();
                    emptyDto.setId(-1);
                    emptyDto.setName("None");
                    protocolStore.add(emptyDto);

                    AppEntryPoint.getLogbookdataservice().getAllProtocols(new AsyncCallback<List<ProtocolDto>>() {

                        @Override
                        public void onSuccess(List<ProtocolDto> result) {               
                            protocolStore.addAll(result);
                        }

                        @Override
                        public void onFailure(Throwable caught) {
                            // TODO Auto-generated method stub

                        }
                    });
                }
            });

感谢任何花时间回答这个问题的人。

1 个答案:

答案 0 :(得分:3)

您应该在Combobox中查看异步支持,而不是重新发明方形轮。

Sencha Demo - http://www.sencha.com/examples/#ExamplePlace:advancedcombobox

Stackoverflow - 这里讨论的一种方法 - Dynamic Autosuggest Combobox in GXT

GXT论坛 - http://www.sencha.com/forum/showthread.php?185967-ComboBox-doQuery-method-seems-not-working-with-Remote-Loader