/*
* redmicro all Copyright (c)
* Created by seeker910 on 2015/6/30.
* 外键字段输入
*/
Rsd.define('Rsd.form.TextFK', {
extend: 'Rsd.form.Text',
requires:[],
xtype: 'text-fk',
border:false,
selector:{},
/**
*
*/
constructor: function TextFK (config) {
this.apply(config||{});
},
/**
*
*/
onAfterInit:function onAfterInit()
{
this.callParent();
this.ctrl.element.readOnly = true;
},
/**
*
* */
setValue:function setValue(value) {
var me =this;
me.__value = value ;
if(me.ctrl.element)
{
if(Rsd.app.indexedDb)
{
Rsd.app.indexedDb.getObjectByKey(me.selector.modelType,value,function(obj){
if(obj)
{
me.ctrl.element.value = obj[me.selector.textMember];
}
else
{
me.ctrl.element.value = value;
}
});
}
else
{
me.ctrl.element.value = value;
console.error("启动时 Rsd.app.indexedDb 未初始化");
}
}
},
/**
*
* */
getValue:function getValue() {
return this.__value;
},
/**
*
*/
btn_show_selector:function btn_show_selector()
{
if(this.readOnly)
{
return;
}
if(Rsd.isEmpty(this.selector.modelType))
{
console.error("控件Rsd.form.TextFK属性selector.modelType为空。");
}
var cols = Rsd.arrayConcat([{text:'选择',xtype:'checkbox',align:'center',dataIndex:'_sel_'+this.selector.keyMember,editable:true,multiple:this.selector.multiple}],this.selector.gridColumns||[]);
var me = this;
if(Rsd.isEmpty(this.selector.viewerType))
{
Rsd.showMessage('该控件selector属性未找到viewerType的值。');
return;
}
Rsd.create(this.selector.viewerType,{
readOnly:true,
autoLoad:true,
title:this.selector.title,
modelType:this.selector.modelType,
where:this.selector.where,
sort:this.selector.sort,
gridColumns:cols,
width:this.selector.width||800,
height:this.selector.height||600,
buttons: [
{
text:' 确 定 ',
width:120,
handler:function(rows,btn){
for(var i in rows)
{
var row = rows[i];
if(row['_sel_'+me.selector.keyMember])
{
if(me.selector.multiple)
{
}
else
{
me.setValue(row[me.selector.keyMember]);
me.ctrl.element.value = row[me.selector.textMember]||'-';
break
}
}
}
//console.log(me.getValue());
btn.parent.close();
}
}
],
parent:this,
footBar:{xtype:'container',height:40,width:'100%',border:true},
showItem:function(){}
}).showDialog();
},
/*
* 返回 对象或数组
* */
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(_value==undefined)
{
return document.createTextNode(_config.emptyText ||'-');
}
//debugger;
var _ctrl = null;
if(_editable)
{
_ctrl = document.createElement('a');
_ctrl.onclick = function()
{
alert("Error:Rsd.form.TextFK列编辑模式未实现");
}
}
else
{
_ctrl = document.createElement('span');
}
if(Rsd.app.indexedDb)
{
Rsd.app.indexedDb.getObjectByKey(_config.selector.modelType,_value,function(obj){
if(obj)
{
var _txt = document.createTextNode(obj[config.selector.textMember]);
_ctrl.appendChild(_txt);
}
else
{
var _txt = document.createTextNode((_value == null || _value == undefined || _value == '') ? _config.emptyText ||'': _value);
_ctrl.appendChild(_txt);
}
});
}else
{
console.error("启动时 Rsd.app.indexedDb 未初始化");
}
return [_ctrl];
}
},function(type){
var _selectorGetter = function () {
return this.___selector;
};
var _selectorSetter = function (value) {
if(Rsd.isEmpty(value))
{
this.___selector = null;
return;
}
this.___selector = Rsd.apply({
//className 如: 'Rsd.zen.dialog.BizListDialog'
viewerType:null,
//外键对象类型
modelType:null,
where:null,
sort:null,
style:null,
text:'[选 择]',
/**
* 选择器窗体标题
*/
title:'',
keyMember:'Id',
textMember:'',
multiple:false,
handler:'btn_show_selector'
},value);
}
this.defineProperty(type,"selector", _selectorGetter, _selectorSetter,false);
});