View Full Version : [FIXED] BufferedRenderer doesn't work with non-remote data/stores

16 Jan 2013, 7:24 AM
There is a problem with the BufferedRenderer grid's plugin that prevents it from working with data not loaded with a proxy - or at least that's the best way I can summarize it :P

Anyhow, there are 2 scenarios where this can be seen: 1) you directly add records to a store or 2) the store is created dynamically (e.g.) on a hasMany association. Visually the grid will display just a single item and errors will start appearing on the console and the application starts to become instable/buggy.

I've tracked down the problem to the setViewSize method of the BufferedRenderer plugin on the line:

end = Math.min(start + viewSize - 1, store.getTotalCount() - 1);

In that line ExtJs is querying the totalCount for the store, however, stores created as I described above, do not have a totalCount set, only a count.

I believe the best solution would be to change that call to something like (store.getTotalCount() || store.getCount()) but I'm unsure of the impact of a larger scale. Anyhow, here's a test case:

<LINK href="http://cdn.sencha.com/ext/beta/" rel="stylesheet" type="text/css">
<script type="text/javascript" src="http://cdn.sencha.com/ext/beta/"></script>
<script type="text/javascript">

Ext.onReady(function() {
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [{
name: 'name',
type: 'string'

var aCommonStore = window.storeRef = new Ext.data.Store({
model: 'User',
data: [{
name: 'Foo'
}, {
name: 'Bar'

new Ext.button.Button({
renderTo: document.body,
text: 'Create',
handler: function() {
new Ext.window.Window({
autoShow: true,
layout: 'fit',
width: 400,
height: 200,
items: {
xtype: 'gridpanel',
plugins: [{
ptype: 'bufferedrenderer'
store: aCommonStore,
columns: [{
dataIndex: 'name',
text: 'Name'

16 Jan 2013, 11:09 AM
This problem also seems to affect filtered stores. The scrollheigt is ajusted to fit the totalCount instead of just the "visible" items.

I've overriden even method of BufferedRenderer that has a getTotalCount() and replaced with getCount(). Everything seems to work fine now.

16 Jan 2013, 4:05 PM
Thanks for the test case, this one has already been resolved post B2.