/**
* @class Roo.form.ComboBoxArray
- * @extends Roo.form.ComboBox
+ * @extends Roo.form.TextField
* A facebook style adder... for lists of email / people / countries etc...
* pick multiple items from a combo box, and shows each one.
*
*/
name : false,
/**
- * @cfg {String} name The hidden name of the field, often contains an comma seperated list of names
+ * @cfg {String} hiddenName The hidden name of the field, often contains an comma seperated list of names
*/
hiddenName : false,
items : false,
// private - the hidden field el.
hiddenEl : false,
-
+ // private - the filed el..
el : false,
//validateValue : function() { return true; }, // all values are ok!
setValue: function(v) // not a valid action - must use addItems..
{
- Roo.log(v);
+
if (this.store.isLocal) {
// then we can use the store to find the values..
// comma seperated at present.. this needs to allow JSON based encoding..
- this.hiddenField.setValue(v);
- var ar = [];
- Roo.each(v.split(','), function(v) {
-
+ this.hiddenEl.value = v;
+ var v_ar = [];
+ Roo.each(v.split(','), function(k) {
+ Roo.log("CHECK " + this.valueField + ',' + k);
+ var li = this.store.query(this.valueField, k);
+ if (!li.length) {
+ return;
+ }
+ add = {};
+ add[this.valueField] = k;
+ add[this.displayField] = li.item(0).data[this.displayField];
- });;
-
+ this.addItem(add);
+ }, this)
+
}
- var _this = this;
- Roo.each(v, function(l) {
- _this.addItem(l);
- });
+
},
setFromData: function(v)
{
- Roo.log(v);
+ // this recieves an object, if setValues is called.
+ var keys = v[this.valueField].split(',');
+ var display = v[this.displayField].split(',');
+ for (var i = 0 ; i < keys.length; i++) {
+
+ add = {};
+ add[this.valueField] = keys[i];
+ add[this.displayField] = display[i];
+ this.addItem(add);
+ }
},