Source: widget/MajorSubForm.js

/*
 * redmicro all Copyright (c)
 * Created by seeker910 on 2015/7/2.
 * 
 * 主从表单
 */
Rsd.define('Rsd.widget.MajorSubForm', {
    extend: 'Rsd.container.Component',
    requires: [
        'Rsd.widget.ModelForm',
        'Rsd.control.Grid',
        'Rsd.control.GridToolBar',
        'Rsd.form.ComboBoxEx',
        'Rsd.form.Timestamp'
    ],
    layout: 'vbox',
    xtype:'major-sub-form',
    items: [
        {
            xtype: 'model-form',
            legend: '主表信息',
            fields:[],
            height: 'auto'
        },
        {
            xtype:'grid',
            margin: '10 20 10 20',
            "columns": [],
            "fields": [],
            titleMember:null,
            flex: 40
        }
    ],

    /*
     * */
    constructor: function MajorSubViewControl(config) {

        config = config || {};
        this.apply(config);

    },

    /**
    *@private
    * */
    applyMajor:function applyMajor(major)
    {
        Rsd.apply(this.items[0],major);
    },
    /**
    *@private 
    * */
    applySub:function applySub(sub)
    {
       Rsd.apply(this.items[1],sub);
    },
    /*
     *
     * */
    loadMajor:function loadMajor(data)
    {
        var _major =  this.items[0];
        try {
            _major.loadData(data);
        } catch (ex) {
            Rsd.error('加载主表数据失败', 'Rsd.widget.MajorSubForm',ex);
        }
    },
    /*
     *
     * */
    loadSub:function loadSub(args,callback)
    {
        var _sub = this.items[1];
        try {
            _sub.loadData(args,callback);
        } catch (ex) {
            Rsd.error('加载从表数据失败', 'Rsd.widget.MajorSubForm',ex);
        }
 
    },
    /**
     * @description 获取数据
     */
    getData:function getData(target)
    { 
        if(target && target == 'major')
        {
            if(this.items[0].checkRecord()==false)
            {
                this.items[0].showError(); 
                return null;
            }
            return this.items[0].getRecord();
        }

        if(target && target == 'sub')
        {
            return this.items[1].dataSource||[];
        }

        var data = {major:null,sub:[]};
        if(this.items[0].checkRecord()==false)
        {
            this.items[0].showError();  
        }else
        {
            data.major = this.items[0].getRecord()
        }

        data.sub = this.items[1].getData() ||[];
        return data;
    }

},function (type) {

    var _subGetter = function () {

        return this.__sub||{modelType:'',fk:''};

    };

    var _subSetter = function (value) {
        this.__sub = Rsd.apply({modelType:'',fk:''},value || {});
        this.applySub(this.__sub);
    }

    this.defineProperty(type,"sub", _subGetter, _subSetter,true);

    var _majorGetter = function () {

        return this.__major||{key:'',titleField:''} ;

    };

    var _majorSetter = function (value) {
        this.__major = Rsd.apply({key:'',titleField:''},value || {});
        this.applyMajor(this.__major);
    }

    this.defineProperty(type,"major", _majorGetter, _majorSetter,true);
});