Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Value of ComboBoxItem can't be accessed in grid

    Hi,

    I've having a problem accessing the value of a ComboBoxItem in a grid cell while editing. It doesn't seem to get updated. The KeyUp event gets fired OK, it's just the value is always set to 'null'.

    I've got a test case below with an example of the value working in a form, and not working in the grid:

    Code:
    import com.google.gwt.core.client.EntryPoint;
    import com.smartgwt.client.types.ListGridEditEvent;
    import com.smartgwt.client.types.ListGridFieldType;
    import com.smartgwt.client.types.SelectionStyle;
    import com.smartgwt.client.widgets.Button;
    import com.smartgwt.client.widgets.form.fields.events.KeyUpEvent;
    import com.smartgwt.client.widgets.layout.VLayout;
    import com.smartgwt.client.widgets.Label;
    import com.smartgwt.client.widgets.events.ClickEvent;
    import com.smartgwt.client.widgets.events.ClickHandler;
    import com.smartgwt.client.widgets.form.DynamicForm;
    import com.smartgwt.client.widgets.form.fields.ComboBoxItem;
    import com.smartgwt.client.widgets.form.fields.events.KeyUpHandler;
    import com.smartgwt.client.widgets.grid.ListGrid;
    import com.smartgwt.client.widgets.grid.ListGridField;
    
    public class Test2 implements EntryPoint {
    
        Label label;
    
        public Test2() {
        }
    
        public void onModuleLoad() {
            VLayout v = new VLayout();
            v.setWidth100();
            v.setHeight100();
            label = new Label();
            label.setContents("");
            label.setBorder("1px dashed black");
            v.addMember(label);
            v.addMember(thisWorks());
            v.addMember(thisDoesntWork());
            v.draw();
        }
    
        public DynamicForm thisWorks()
        {
            final ComboBoxItem c = new ComboBoxItem("combobox1", "This works");
            c.setShowPickerIcon(false);
            c.setShowPickListOnKeypress(true);
            c.addKeyUpHandler(new KeyUpHandler() {
                public void onKeyUp(KeyUpEvent event) {
                        label.setContents("Value: '" + c.getValueAsString() + "'");
                }
            });
            DynamicForm f = new DynamicForm();
            f.setFields(c);
            return f;
        }
    
        private VLayout thisDoesntWork()
        {
            final ListGrid grid = new ListGrid();
            grid.setWidth(600);
            grid.setHeight(200);
            grid.setAlternateRecordStyles(true);
            grid.setShowAllRecords(true);
            grid.setShowHeaderContextMenu(false);
            grid.setID("abcd");
            grid.setShowRollOver(false);
            grid.setSelectionType(SelectionStyle.NONE);
            grid.setCanEdit(true);
            grid.setEditByCell(true);
            grid.setEditEvent(ListGridEditEvent.CLICK);
    
            ListGridField textField = new ListGridField("TEXT", "This doesn't work");
            textField.setWidth("*");
            textField.setType(ListGridFieldType.TEXT);
            final ComboBoxItem c = new ComboBoxItem();
            c.setShowPickerIcon(false);
            c.setShowPickListOnKeypress(true);
            c.addKeyUpHandler(new KeyUpHandler() {
                public void onKeyUp(KeyUpEvent event) {
                        label.setContents("Value: '" + c.getValueAsString() + "'");
                }
            });
            textField.setEditorType(c);
            grid.setFields(textField);
    
            Button button = new Button("Add row");
            button.addClickHandler(new ClickHandler() {
                public void onClick(ClickEvent event) {
                    grid.startEditingNew();
                }
            });
    
            VLayout v = new VLayout();
            v.addMember(grid);
            v.addMember(button);
            return v;
        }
    }
    Is it something to do with the lack of a DynamicForm in the grid? Is there any way I can access the value of the combobox in the grid?

    I'd really appreciate any help you can give me on this.
    Thanks,
    Alan

    #2
    I just tried this with a TextItem cell editor in the ListGrid, instead of a ComboBoxItem, and that also does not work, so this isn't confined to just ComboBoxItems.

    It must be something to do with FormItem values in general, or the way I'm trying to access them?

    thanks in advance

    Comment


      #3
      I figured it out. :-)

      I just needed to refer to event.getItem() instead of the ComboBoxItem directly.

      Comment

      Working...
      X