/**
* redmicro all Copyright (c)
* Created by seeker910 on 2015/6/30.
* 数据源来自DataStore,在DataStore数据量不大时,或数据已加载到本地时,适合使用该控件。
*/
Rsd.define('Rsd.form.ComboBoxEx', {
extend: 'Rsd.form.ComboBox',
xtype: 'combobox-ex',
/**
* @description Rsd.data.Store数据源
*/
dataStore:null,
/*
* */
constructor: function ComboBoxEx (config) {
this.apply(config||{});
},
/**
* @private
* 未实现dataStore带筛选的功能数据加载
* */
onAfterInit:function onAfterInit()
{
var me = this;
if(Rsd.isString( this.dataStore))
{
this.dataStore = Rsd.widget(this.dataStore,{});
}
try
{
this.dataStore.load(this.args||{},function(data){
var _list = null;
if(Rsd.isEmpty(me.dataStore.listName) )
{
_list = data.hasOwnProperty('data')?data.data:data;
}
else
{
if(data.data && !data.data.hasOwnProperty(me.dataStore.listName))
{
me.error('Data has no property(listName is ['+me.dataStore.listName+']).',data.data);
}
_list = data.data[me.dataStore.listName];
}
me.setDataSource(_list) ;
if(me.seclectIndex !=null
&& me.seclectIndex != undefined
&& me.seclectIndex > -1)
{
me.select(me.seclectIndex);
}
});
}
catch(ex)
{
console.error("加载数据源失败:" + ex.toString());
}
this.callParent();
},
/**
* @private
* 在表格列属性中需要设置以下属性
* dataStore :数据源,
* textMember :现实到文本列名称,
* 「colorMember」:颜色属性,选填
* */
makeControl:function makeControl(config,row)
{
if(Rsd.isEmpty(row))
{
return[];
}
var _config = config ||{};
var _editable = _config.editable;
var _value = row[_config.dataIndex|| _config.dataindex || _config.name];
if(Rsd.isEmpty(_value))
{
return [];
}
var _textMember = _config.textMember || 'text';
var _colorMember = _config.colorMember || 'color';
if(Rsd.isString( _config.dataStore))
{
_config.dataStore = Rsd.widget(_config.dataStore,{});
}
var _ctrl = null;
if(_editable)
{
var _dataSource = data.data;
_config.dataSource = _dataSource;
_ctrl = document.createElement('label');
_ctrl.appendChild(document.createTextNode("Error:ComboBoxEx编辑模式未实现"));
}
else
{
_ctrl = document.createElement('label');
_ctrl.style.position = 'relative';
_ctrl.style.width = '100%';
_ctrl.style.height = '100%';
if(Rsd.isEmpty(_config.dataStore))
{
console.error("dataStore is nulll.");
}
else
{
_config.dataStore.load(_config.args||{},function(data){
var _txt = _value;
_config.dataStore.getObject(_value,function (obj) {
var _item = obj;
var _timer = 0;
if(_item)
{
_timer = 10;
_txt = _item[_textMember];
if(_config.formatString)
{
_txt = Rsd.formatTemplateString(_config.formatString,_item);
}
if(_colorMember && _item.hasOwnProperty(_colorMember))
{
_ctrl.style.color = _item[_colorMember];
}
}
else
{
_timer = 50;
}
setTimeout(function () {
_ctrl.innerHTML =_txt;
},_timer);
});
});
}
}
return [_ctrl];
}
});