2016-10-10 7 views
0

У меня есть следующие Mixin объявлены в JS/виджетов/LoadAllStoreMixin.js:Пользовательские _StoreMixin для dGrid не делать то, что он должен делать

define([ 'dojo/_base/declare', 'dgrid/_StoreMixin' ], function(declare, 
     _StoreMixin) { 
    return declare(_StoreMixin, { 
     // summary: 
     // dgrid mixin which implements the refresh method to 
     // always perform a single query with no start or count 
     // specified, to retrieve all relevant results at once. 
     // Appropriate for grids using memory stores with small 
     // result set sizes. 

     refresh : function() { 
      var self = this; 

      // First defer to List#refresh to clear the grid's 
      // previous content 
      this.inherited(arguments); 

      if (!this._renderedCollection) { 
       return; 
      } 

      return this._trackError(function() { 
       var queryResults = self._renderedCollection.fetch(); 
       queryResults.totalLength.then(function(total) { 
        // Record total so it can be retrieved later via 
        // get('total') 
        self._total = total; 
       }); 
       return self.renderQueryResults(queryResults); 
      }); 
     }, 

     renderArray : function() { 
      var rows = this.inherited(arguments); 

      // Clear _lastCollection which is ordinarily only used for 
      // store-less grids 
      this._lastCollection = null; 

      return rows; 
     } 
    }); 
}); 

Это тот же виджет, как написано в http://dgrid.io/tutorials/0.4/single_query/, чтобы позволить OnDemandList к загружать все, а не только minRowsPerPage записей. он называется так:

var gridDataString = dom.byId("connectedEnvironmentsAndLevelsGridData").innerHTML; 
eval("var connectedEnvironmentsAndLevelsGridJsonData=" + gridDataString); 
var connectedEnvironmentsAndLevelsStore = new Memory( 
     { data: connectedEnvironmentsAndLevelsGridJsonData } 
    ); 
var SelectionGrid = declare([ Grid, LoadAllStoreMixin, Selection, Keyboard, DijitRegistry]); 
connectedEnvironmentsAndLevelsGrid = new SelectionGrid({ 
    store : connectedEnvironmentsAndLevelsStore, 
    selectionMode : "toggle", 
    columns : connectedEnvironmentsAndLevelsGridHeader, 
    allowSelectAll : true, 
    allowSelect: function(row) { 
     // disable the grid's rows basing on the phase compatibility 
     // if true, the row selection is enabled, otherwise disabled 
     return checkPhaseCompatibility(row); 
    } 
}, "connectedEnvironmentsAndLevelsGrid"); 
// Grid is an OnDemandGrid, not a normal grid. 

Он загружается должным образом (так что нет никакой проблемы с define([], function(){}); шаблонным), но по какой-то причине, он возвращается в refresh() в первом if, поэтому он не делает то, что это должно быть. Я понятия не имею, почему это не удается. Мне нужно написать больше кода, чем только функции refresh() и renderArray()?

ответ

0

Вы используете пример из версии dgrid 0.4, надеюсь, вы также используете ту же версию api.

В 0.4 версии, там store свойство было изменено на collection

connectedEnvironmentsAndLevelsGrid = new SelectionGrid({ 
    collection : connectedEnvironmentsAndLevelsStore, 
    selectionMode : "toggle", 
    columns : connectedEnvironmentsAndLevelsGridHeader, 
    allowSelectAll : true, 
    allowSelect: function(row) { 
     // disable the grid's rows basing on the phase compatibility 
     // if true, the row selection is enabled, otherwise disabled 
     return checkPhaseCompatibility(row); 
    } 
}, "connectedEnvironmentsAndLevelsGrid"); 

UPDATE: Если вы используете 0.3version, пример в й пост не будет работать, как нет _renderCollection собственности в _StoreMixin в 0,3 версия. Кроме того, отсутствуют другие свойства, такие как «_total», который используется в этом расширении.

Если вы могли бы сообщить нам, что вы пытаетесь достичь, то может быть, мы можем предоставить альтернативные решения.

+0

Я действительно не знаю, какую версию dgrid я использую. Вероятно, раньше 0,4, если у него еще нет коллекции. Это версия, которая поставляется с Dojo 1.8. Мы не можем легко изменить эту версию, поэтому мне, вероятно, понадобится пример из версии dgrid, которая поставляется с Dojo 1.8. – Nzall

+0

Я проверил changeLog. Мы используем dGrid 0.3.14. – Nzall

+0

@Nzall обновил сообщение с дополнительной информацией. –

 Смежные вопросы

  • Нет связанных вопросов^_^