0

我想将文本字段添加到网格面板的 tbar 中,但它不起作用。

我尝试使用按钮然后它工作..

此代码不起作用,错误消息说TypeError: g.el is null

var grid = Ext.create('Ext.grid.Panel', {
...
tbar : [
  {
     xtype : 'textfield',
     name : 'test'
  }
]
});

但是这段代码有效,

var grid = Ext.create('Ext.grid.Panel', {
...
tbar : [
  {
     xtype : 'button',
     text : 'keyword'
  }
]
});

有谁知道,为什么会这样?

我发现,

renderTo : 'tableID',但我改为renderTo : Ext.getBody()

然后它工作。但是我想把网格放到特定的html元素中,我该怎么办?

[编辑]

我想插入到#listTable,

<div id="wrap">
    <table id="listTable"></table>
</div>

我只是试图“包装”然后它工作,

所以我尝试了,renderTo : 'wrap > listTable'

但它不起作用:(

4

2 回答 2

1

下面的代码在 4.1.3 中没有任何错误。这可能是您的版本中的错误?您可以在其中一个API 演示框中对其进行测试。复制粘贴就行了。tbarprop 是 a dockedItemthat get applied to的简写top。传递的数组会自动插入到toolbar. 没有更多的事情发生。所以它必须工作

Ext.create('Ext.data.Store', {
    storeId:'simpsonsStore',
    fields:['name', 'email', 'phone'],
    data:{'items':[
        { 'name': 'Lisa',  "email":"lisa@simpsons.com",  "phone":"555-111-1224"  },
        { 'name': 'Bart',  "email":"bart@simpsons.com",  "phone":"555-222-1234" },
        { 'name': 'Homer', "email":"home@simpsons.com",  "phone":"555-222-1244"  },
        { 'name': 'Marge', "email":"marge@simpsons.com", "phone":"555-222-1254"  }
    ]},
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'items'
        }
    }
});

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    tbar: [
      {
         xtype : 'textfield',
         name : 'test'
      }
    ],
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [
        { text: 'Name',  dataIndex: 'name' },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});

编辑

renderTo需要一个有效id的 HTML 元素或Ext.Element

于 2012-11-19T18:37:38.090 回答
0

这在 ExtJS 4.1 上对我来说很好,虽然我通常在 initComponent 函数中初始化组件(尽管我不明白为什么它不应该像你那样工作)。所以这将是这样的:

initComponent: function() {
    this.dockedItems = [{
        xtype: 'toolbar',
        items: [ {xtype:'textfield', name:'test', value:'test'} ]
    }];
    this.callParent(arguments);
}
于 2012-11-19T18:15:36.727 回答