Problem with ComboBoxItem and empty string descriptions - ChangedHandler is being called early.
I have included an example of this -
The first drop down just changes a description field on a record you select to “” … if this isn’t done the problem doesn’t show up.
The second drop down box has a changedHandler …. and it is fired [early] as soon as it is dropped down - you do not need to select a record first!
Note: it doesn’t need to be changed to an empty string in the same session … the data can already be like that …. it just made it a bit easier (I think) to demonstrate it in my test case.
In an ideal world I wouldn’t have datasets with empty strings present - but sadly I do do at the moment in some places.
The file is designed to just overwrite the BuiltInDS.java file in the BuiltInDS sample and work with no other changes.
Code:
My version is: v10.0p_2014-10-01/Pro Deployment (built 2014-10-01)
Version 4.1 [Pro/2014-10-04] does not show this behaviour.
Thank-you very much in advance.
I have included an example of this -
The first drop down just changes a description field on a record you select to “” … if this isn’t done the problem doesn’t show up.
The second drop down box has a changedHandler …. and it is fired [early] as soon as it is dropped down - you do not need to select a record first!
Note: it doesn’t need to be changed to an empty string in the same session … the data can already be like that …. it just made it a bit easier (I think) to demonstrate it in my test case.
In an ideal world I wouldn’t have datasets with empty strings present - but sadly I do do at the moment in some places.
The file is designed to just overwrite the BuiltInDS.java file in the BuiltInDS sample and work with no other changes.
Code:
Code:
package com.smartgwt.sample.client;
import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.ComboBoxItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
import com.smartgwt.client.widgets.grid.ListGridRecord;
public class BuiltInDS implements EntryPoint {
@Override
public void onModuleLoad() {
final DynamicForm form = new DynamicForm();
form.setWidth(500);
final DataSource ds = DataSource.get("supplyItem");
final ComboBoxItem comboBoxItem = new ComboBoxItem();
comboBoxItem.setName("filteredCombo");
comboBoxItem.setAddUnknownValues(false);
comboBoxItem.setOptionDataSource(ds);
comboBoxItem.setDisplayField("description");
comboBoxItem.setValueField("itemID");
comboBoxItem.addChangedHandler(new ChangedHandler() {
@Override
public void onChanged(ChangedEvent event) {
ListGridRecord rec = comboBoxItem.getSelectedRecord();
rec.setAttribute("description", "");
ds.updateData(rec);
}
});
ComboBoxItem comboBox2 = new ComboBoxItem();
comboBox2.setName("filteredCombo2");
comboBox2.setTitle("Choose an item (ComboBox)");
comboBox2.setAddUnknownValues(false);
comboBox2.setOptionDataSource(ds);
comboBox2.setDisplayField("description");
comboBox2.setValueField("itemID");
comboBox2.addChangedHandler(new ChangedHandler() {
@Override
public void onChanged(ChangedEvent event) {
SC.say("Changed!");
}
});
form.setFields(comboBoxItem, comboBox2);
form.draw();
}
}
My version is: v10.0p_2014-10-01/Pro Deployment (built 2014-10-01)
Version 4.1 [Pro/2014-10-04] does not show this behaviour.
Thank-you very much in advance.
Comment