Sencha gxt,在组合框中设置值

时间:2015-02-25 12:34:17

标签: java extjs combobox gxt

我试图在组合框中设置值,但它对我不起作用。我试着这样做:

sortingStore = new ListStore<String>(modelKeyProvider);
        sortingStore.add("Value 1");
        sortingStore.add("Value 2");
ComboBox<String> combobox2 = new ComboBox<String>(sortingStore,
                new LabelProvider<String>() {

                    @Override
                    public String getLabel(String item) {
                        return item;
                    }
                });
combobox2.addSelectionHandler(new SelectionHandler<String>() {

            @Override
            public void onSelection(SelectionEvent<String> event) {
                ComboBox<String> combo = (ComboBox<String>) event.getSource();
                combo.setValue("Other Value");
            }
        });

在组合框中更改值后,没有任何事情发生。有谁知道为什么? 我使用的是sencha gxt 3.0

2 个答案:

答案 0 :(得分:0)

改用comboBox.addValueChangeHandler(...)。

答案 1 :(得分:0)

我错了。它仅适用于组合框,我的组合框位于网格的单元格中。我试着像往常一样设置组合框的值,但它对网格中的组合框起作用了:/

这是整段代码

    typeStore = new ListStore<String>(modelKeyProvider);
    typeStore.add("Category");
    typeStore.add("Source");
    typeStore.add("Author");
    typeStore.add("Publication");

    sortingStore = new ListStore<String>(modelKeyProvider);
    sortingStore.add("Ascending");
    sortingStore.add("Descending");

    ContentPanel panel = new ContentPanel();
    panel.setHeadingText("Categories sorting");
    panel.setBodyStyle("background-color: #E7EEF9");

    final ColumnConfig<GridElement, String> cc1 = new ColumnConfig<GridElement, String>(
            properties.groupType(), 150, "GroupType");
    ColumnConfig<GridElement, String> cc2 = new ColumnConfig<GridElement, String>(
            properties.sorting(), 150, "Sorting");

    List<ColumnConfig<GridElement, ?>> list = new ArrayList<ColumnConfig<GridElement, ?>>();
    list.add(cc1);
    list.add(cc2);

    ColumnModel<GridElement> columnModel = new ColumnModel<GridElement>(
            list);

    Grid<GridElement> grid = new Grid<GridElement>(
            (ListStore<GridElement>) mainStore, columnModel);

    final GridInlineEditing<GridElement> editing = new GridInlineEditing<GridElement>(
            grid);
    ComboBox<String> combobox1 = new ComboBox<String>(typeStore,
            new LabelProvider<String>() {

                @Override
                public String getLabel(String item) {
                    return item;
                }
            });
    combobox1.setTriggerAction(TriggerAction.ALL);
    combobox1.setEditable(false);
    editing.addEditor(cc1, combobox1);

    final ComboBox<String> combobox2 = new ComboBox<String>(sortingStore,
            new LabelProvider<String>() {

                @Override
                public String getLabel(String item) {
                    return item;
                }
            });
    combobox2.setTriggerAction(TriggerAction.ALL);
    combobox2.setEditable(false);
    combobox2.setAutoValidate(true);
    editing.addEditor(cc2, combobox2);
    editing.setClicksToEdit(ClicksToEdit.TWO);
    editing.addCompleteEditHandler(new CompleteEditHandler<GridElement>() {

        @Override
        public void onCompleteEdit(CompleteEditEvent<GridElement> event) {
            int col = event.getEditCell().getCol();
            int row = event.getEditCell().getRow();
            String value = (String) ((ComboBox<Object>) editing
                    .getEditor(event.getSource().getEditableGrid()
                            .getColumnModel().getColumn(col))).getValue();
            if (col == 0) {
                mainStore.get(row).setGroupType(value);
            } else {
                mainStore.get(row).setSorting(value);
            }

            if(mainStore.get(row).getGroupType().equals(i18n.ordering_category())) {
                mainStore.get(row).setSorting("Custom");
                ((ComboBox<Object>) editing
                        .getEditor(event.getSource().getEditableGrid()
                                .getColumnModel().getColumn(col))).setValue("Custom");
            }
        }
    });
    grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
    grid.setWidth(302);
    grid.setHeight(300);
    grid.setBorders(true);

    VerticalLayoutContainer vLayout = new VerticalLayoutContainer();
    vLayout.add(createToolbar(grid, editing),
            new VerticalLayoutData(-1, 27));

    CenterLayoutContainer cLayout = new CenterLayoutContainer();
    cLayout.add(grid);
    vLayout.add(cLayout, new VerticalLayoutData(1, 1));

    panel.add(vLayout);

我做错了什么?