/**
* @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!
this.combo = Roo.factory(this.combo, Roo.form);
this.combo.onRender(ct, position);
+ // assigned so form know we need to do this..
+ this.store = this.combo.store;
+ this.valueField = this.combo.valueField;
+ this.displayField = this.combo.displayField ;
+
this.combo.wrap.addClass('x-cbarray-grp');
},
setValue: function(v) // not a valid action - must use addItems..
{
- if (typeof(v) != 'object') {
- return;
+
+
+ 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.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)
+
+
+
}
- Roo.log(v);
- Roo.log(this.hiddenEl.dom.value);
- Roo.log(this.el.dom.value);
- var _this = this;
- Roo.each(v, function(l) {
- _this.addItem(l);
- });
},
+ setFromData: function(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);
+ }
+
+
+ },
+
+
validateValue : function(value){
return Roo.form.ComboBoxArray.superclass.validateValue.call(this, this.getValue());