Grid store config throws "Uncaught TypeError: Cannot read property 'buffered' of undefined"

extjs, extjs4.1, grid, search, store

Solution

Well it is just a typo of your storename.

The error `Uncaught TypeError: Cannot read property 'buffered' of undefined`only indicates that the store could not be bound. It may be a bit misleading.

Try the grid with either

store: advSearchPost

or

store: Ext.StoreMgr.lookup('AdvSearchPost') // if in any form a controller takes care about your store 

and it will work.

Edit

I guess you haven't any controller so I recommend you to create your store like this

Ext.create('Ext.data.Store', {
   pageSize: 10,
   model: 'AdvSearchPost',
   storeId: 'AdvSearchPost'
});

That will enable you to receive the store by the `StoreManager` from everywhere (after it is created). That will also enable the last statement to work without any controller.

Problem

I have form and grid. the user must enter data in form fields then display related records in the grid. I want to implement a search form, e.g: user will type the name and gender of the student, then will get a grid of all students have the same name and gender. So, I use Ajax to send form fields value to PHP and then create a `json_encode` which will be used in grid store. I am really not sure if my idea is good. But I haven't found another way to do that. The problem is there is a mistake in my store but I couldn't figure out what it is. I get this error: `Uncaught TypeError: Cannot read property 'buffered' of undefined` My View: ``` { xtype: 'panel', layout: "fit", id: 'searchResult', flex: 7, title: '<div style="text-align:center;"/>SearchResultGrid</div>', items: [{ xtype: 'gridpanel', store: 'advSearchStore', id: 'AdvSearch-grid', columns: [{ xtype: 'gridcolumn', dataIndex: 'name', align: 'right', text: 'name' }, { xtype: 'gridcolumn', dataIndex: 'gender', align: 'right', text: 'gender' } ], viewConfig: { id: 'Arr', emptyText: 'noResult' }, requires: ['MyApp.PrintSave_toolbar'], dockedItems: [{ xtype: 'PrintSave_tb', dock: 'bottom', }] }] } ``` My Controller: ``` . . . xmlhttp.open("GET","AdvSearch.php?search_name="+search_name,true); xmlhttp.send(null); ``` My PHP script: ``` if (!$con) { throw new Exception("Error in connection to DB"); } $query ="SELECT name, gender FROM students WHERE name ILIKE '%$search_name%' "; $result = pg_query($query); while ($row = pg_fetch_array($result)) { $Arr[] = array('name' => $row[0], 'gender' => $row[1]); } $searchResult_list = array(); $searchResult_list['success'] = true; $searchResult_list['Arr'] = $Arr; $searchResult_list['totalCount'] = count( $searchResult_list['Arr'] ); echo json_encode($searchResult_list); if (!$result) die("Error in query: " . pg_last_error()); pg_close($con); ``` My Store, Model: ``` Ext.define('AdvSearchPost', { extend: 'Ext.data.Model', proxy: { type: 'ajax', url: 'AdvSearch.php', reader: { type: 'json', root: 'Arr', totalProperty: 'totalCount' } }, fields: [{ name: 'name' }, { name: 'type_and_cargo' } ] }); advSearchStore = Ext.create('Ext.data.Store', { pageSize: 10, model: 'AdvSearchPost' }); ```

Original source