0

Grid パネルの tbar に textfield を追加したいのですが、うまくいきません。

そして、ボタンで試してみましたが、動作します..

このコードは機能していません。エラー メッセージは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 デモボックスの 1 つでテストできます。コピペするだけです。tbarprop はdockedItem、 に適用されるaの短縮形です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には有効なidHTML 要素または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 に答える