Почему файлы выбора элементов множественного выбора Ext JS не включены в загрузку Ext JS 3.3 и где они находятся? - PullRequest
1 голос
/ 09 марта 2011

Я пытаюсь настроить селектор элементов множественного выбора на основе этого примера кода sencha .

Однако после встраивания в мою среду я получаю эту ошибку:

enter image description here

Что может быть причиной этой ошибки и как я могу ее исправить?

Добавление

Я обнаружил, что когда я закомментирую эту строку:

//xtype: 'itemselector',

тогда это работает. Почему не работает xtype "itemselector"?

Странно также, что я нашел этот список допустимых ExtJS xtypes и itemselector отсутствует в нем. Как мог бы работать пример Sencha, если "itemselector" не является допустимым xtype?

Приложение 2

Итак, я обнаружил, что демо обращается к этим двум файлам:

<script type="text/javascript" src="../ux/MultiSelect.js"></script>
<script type="text/javascript" src="../ux/ItemSelector.js"></script>

Демонстрационная версия указана в Ext JS 3.3 Samples , и я скачал Ext JS 3.3 , но единственный файл, который у меня есть в каталоге "ux":

enter image description here enter image description here

Мой план состоит в том, чтобы загрузить эти файлы javascript непосредственно из примера, но: Что мне не хватает в примере itemselector, который заставляет меня соединить это вместе, чтобы работать так?

После добавления этих двух файлов я получаю сообщение об ошибке:

enter image description here

Так что, похоже, проблема 3.3.0 / 3.3.1, поскольку эти два отсутствующих файла .js помечены как 3.3.1:

enter image description here

Просто странно, что их нет в заметках о выпуске Ext JS 3.3.1 .

Я скачал 3.3.1, и пример работает локально, поэтому я знаю, что у меня есть все файлы. Поэтому я снова пытаюсь вписать это в среду моего приложения, я исправил ошибку Ext.EventManager, скопировав в ux-all-debug.js:

enter image description here

Но я все еще получаю эту ошибку:

enter image description here

Я не могу обновить Ext JS, который использует мое приложение, так как очень много элементов управления зависят от старой файловой структуры. Как я могу узнать, чего не хватает, например, как разрешить ему использовать этот 'itemselector' xtype?

Полный код:

<script type="text/javascript">

    clearExtjsComponent(targetRegion);

    var multiselectDataStore = new Ext.data.ArrayStore({
        data: [[123,'One Hundred Twenty Three'],
            ['1', 'One'], ['2', 'Two'], ['3', 'Three'], ['4', 'Four'], ['5', 'Five'],
            ['6', 'Six'], ['7', 'Seven'], ['8', 'Eight'], ['9', 'Nine']],
        fields: ['value','text'],
        sortInfo: {
            field: 'value',
            direction: 'ASC'
        }
    });

    var simple_form = new Ext.FormPanel({
        labelWidth: 75,
        frame:true,
        style: 'margin: 10px',
        title: 'Simple Form',
        bodyStyle:'padding:5px 5px 0',
        width: 700,
        defaults: {width: 230},
        defaultType: 'textfield',

        items: [{
                fieldLabel: 'Item 1',
                name: 'item1',
                allowBlank:false,
                value: 'sfsfdsf'
            },{
                fieldLabel: 'Item 2',
                labelStyle: 'color:red',
                style: 'color:red',
                name: 'item2'
            },{
                fieldLabel: 'Item 3',
                name: 'item3',
                value: 'nnnnn',
                xtype: 'displayfield'
            }, {
                fieldLabel: 'Email',
                name: 'email',
                vtype:'email'
            }, {
                xtype: 'itemselector',
                name: 'itemselector',
                fieldLabel: 'ItemSelector',
                imagePath: '../ux/images/',
                multiselects: [{
                        width: 250,
                        height: 200,
                        store: multiselectDataStore,
                        displayField: 'text',
                        valueField: 'value'
                    },{
                        width: 250,
                        height: 200,
                        store: [['10','Ten']],
                        tbar:[{
                                text: 'clear',
                                handler:function(){
                                    simple_form.getForm().findField('itemselector').reset();
                                }
                            }]
                    }]
            },

            new Ext.form.TimeField({
                fieldLabel: 'Time',
                name: 'time',
                minValue: '8:00am',
                maxValue: '6:00pm'
            }), {
                width:          100,
                xtype:          'combo',
                mode:           'local',
                value:          'en',
                triggerAction:  'all',
                forceSelection: true,
                editable:       false,
                fieldLabel:     'Produkt',
                name:           'language',
                hiddenName:     'language',
                displayField:   'name',
                valueField:     'value',
                store:          new Ext.data.JsonStore({
                    fields : ['name', 'value'],
                    data   : [
                        {name : 'German',   value: 'de'},
                        {name : 'Broschüre',  value: 'en'},
                        {name : 'French', value: 'fr'}
                    ]
                })
            },{
                xtype: 'radiogroup',
                fieldLabel: 'Status',
                columns: 1,
                vertical: true,
                items: [
                    {boxLabel: 'Low', name: 'rb-vert', inputValue: 1},
                    {boxLabel: 'Medium', name: 'rb-vert', inputValue: 2},
                    {boxLabel: 'High', name: 'rb-vert', inputValue: 3, checked: true},
                    {boxLabel: 'Item 4', name: 'rb-vert', inputValue: 4},
                    {boxLabel: 'Item 5', name: 'rb-vert', inputValue: 5}
                ]
            }


        ],
        buttons: [{
                text: 'Save',
                handler: function() {
                    if(simple_form.getForm().isValid()){
                        simple_form.getForm().getEl().dom.action = 'save_form.php';
                        simple_form.getForm().getEl().dom.method = 'POST';
                        simple_form.getForm().submit({
                            success : function(form, action) {
                                changeMenuItemInfoArea(start_info_panel2, 'Data was saved2, check file: output.txt (this is a new component)');
                                simple_form.hide();
                            }
                        })
                    } else {
                        Ext.Msg.minWidth = 360;
                        Ext.Msg.alert('Invlaid Form', 'Some fields are invalid, please correct.');
                    }
                }
            },{
                text: 'Cancel',
                handler: function(){
                    Ext.Msg.alert('Notice', 'Cancel was pressed.');
                }
            }]
    });

    replaceComponentContent(targetRegion, simple_form);


    var start_info_panel2 = new Ext.Panel({
        id: 'info_panel',
        padding: 10,
        margins: 10,
        style: "margin: 10px",
        width: 300,
        html: '<p id="test">This is some information about the form.<p>',
        border: false
    });
    replaceComponentContent(targetRegion, start_info_panel2);

    hideComponent(regionHelp);

</script>

1 Ответ

2 голосов
/ 09 марта 2011

Multiselect является расширением пользователя (следовательно, находится в пакете UX), поэтому вы должны загрузить исходный код отдельно, поскольку он не является частью ядра.

Они делают это и с другими плагинами (например, checkcolumn), потому что они не написаны командой ExtJS и, следовательно, не полностью протестированы / одобрены.

Вы можете получить CSS для мульти-выбора здесь:

http://dev.sencha.com/deploy/dev/examples/ux/css/MultiSelect.css

И JS для itemselector и multiselect здесь:

http://dev.sencha.com/deploy/dev/examples/ux/MultiSelect.js http://dev.sencha.com/deploy/dev/examples/ux/ItemSelector.js

РЕДАКТИРОВАТЬ: Извините, не прочитал весь ваш вопрос. Я бы посоветовал обновить ваш ExtJS до версии 3.3.1, как вы и предлагали, это, пожалуй, лучшее место для начала.

...