extjs 下拉框增加空選項

周厲發表於2016-12-08
//資料字典下拉控制元件

Ext.ns('uc');

uc.cboDic = function (config) {
    var storeDic = Ext.create('Ext.data.Store', {
        autoLoad: false,
        fields: [
            'code',
            'name'
        ],
        proxy: {
            url: rootUrl + 'Dic/readDicDataList',
            type: 'ajax',
            reader: {
                type: 'json'
            }
        }, listeners: {
            load: function (store) {
                var data = {'code': '', 'name': '所有狀態'};
                var rs = [new Ext.data.Record(data)];
                store.insert(0, rs);
            }
        }
    });
    var cbo = new Ext.form.field.ComboBox(Ext.apply({
        store: storeDic,
        triggerAction: 'all',
        queryMode: 'local',
        emptyText: '—請選擇—',
        valueField: 'code',
        displayField: 'name',
        editable: false
    }, config));

    /*storeDic.load();*/
    /*
     字典索引類的表單域名以資料字典項命名為準
     當一個頁面使用多個字典索引類時,用下劃線加字尾區分
     */
    var _id = cbo.getId();
    var _name = cbo.getName();

    var indexStr = _id; //字典索引字串
    if (_id.indexOf("_" + _name) < 0) {
        /*
         控制元件不設定Id,系統會自動生成Id串,
         判斷id串中是否含有Name域名,如果有,則證明是自己設定的Id,是屬於是否有無類的字典項;
         如沒有,條件是true的情況,則取Name域值即可。
         */
        indexStr = _name;
        /*
         只有是否、有無字典需要設定Id屬性,Is_DicIndex或Has_DicIndex;
         其餘的字典項無須設定Id屬性。
         */
    }

    var splitIndex = indexStr.indexOf('_');
    if (splitIndex >= 0) {
        /*
         取下劃線分隔符之前的字串,作為字典索引名稱,分隔符後的僅作同類字典項在同一頁面的區分符號。
         */
        indexStr = indexStr.substr(0, splitIndex);
    }

    if (config.dicIndex) {
        indexStr = config.dicIndex;
    }
    storeDic.load({
        params: {dicCode: indexStr}
        /*,
         callback: function () {
         storeDic.insert(0, _DicRecordEmpty);
         }*/
    });
    return cbo;
}

相關文章