1

我试图让一个组合框运行,但是当我将它添加到我的表单时,表单不显示。

这是我的表单代码:

    Ext.define("Screener.view.Pharmacyform", {

          xtype: 'pharmacyform',
    extend: 'Ext.form.Panel',
    requires: ['Ext.tab.Panel','Ext.form.FieldSet'],

    config:{
         styleHtmlContent: true,
            xtype:'orderform',
            autoscroll: true,


          items:[{
                  xtype: 'fieldset',
                  title: 'Pharmacy Order',

         items: [
            {
                xtype: 'textfield',
                name : 'name',
                label: 'Name'
            },{
                {xtype: 'combo',
    fieldLabel: 'Combobox',
    name:'drugdrug',
    id:'combodrug',

    store: Ext.create('Screener.store.Drugs',{
                            storeId: 'drugstore'

                        }),
                        displayField: 'drugname',
                        valueField: 'drugname',
                        queryMode: 'local',
                        triggerAction: 'all'

        }


              ]
    }]

    }

    });

药店代码:

/*
 * This store loads the drugs from file 'drugs.json'
 * Note: there is no writer attached, so changes will
 * only occur in local cache
 */

    Ext.define('Screener.store.Drugs', {
        extend: 'Ext.data.Store',
    storeId: 'drugStore',

        config: {
            model: 'Screener.model.Drug',
            proxy: {
                type: 'ajax',
                url : 'drugs.json',
                reader: 'json',     
                },
            autoLoad: true

        }
    });

我是 extjs 的新手,请告诉我如何让它工作

4

3 回答 3

0

你没有指定这么多。为了能够帮助您,我需要一个工作示例和您正在使用的煎茶版本。

我从表面上看到的是您有两个商店:第一个在组合框定义中定义为“内联”。该商店不是 Ext.store.Store 的后代,因此它不起作用。

第二个似乎几乎是正确的,但由于您正在实例化第一个,因此未使用它。

尝试将视图中商店的定义更改为:

...
 fieldLabel: 'Combobox',
    name:'drugdrug',
    id:'combodrug',

    store: 'drugStore'
...

此外,您并不是说您是否在控制台中遇到错误。

于 2012-04-15T12:07:39.720 回答
0

问题是您正在按名称引用存储,并且您需要在加载视图之前加载该存储。你有三个选择:

引用该视图的控制器中的store(.stores[]),并在视图之前加载控制器

在 application.stores[] 中引用 store

通过引用而不是名称来设置存储,例如:

{
xtype:'combobox',
store: new Ext.data.Store({model:'somemodel'}),
...
}

最后一个选项可能更好,因为组合通常在他们自己的商店中效果更好。例如,4.1RC2 中有一个错误,您不能将分页与共享存储一起使用。在这种情况下,请确保您将代理放在模型上,以便具有相同模型的商店之间没有代码重复。

于 2012-04-15T19:11:39.100 回答
0

嘿伙计,你应该添加一个声明

renderTo:Ext.getBody()

于 2012-05-01T05:26:40.987 回答