У меня есть следующие 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()
?
Я действительно не знаю, какую версию dgrid я использую. Вероятно, раньше 0,4, если у него еще нет коллекции. Это версия, которая поставляется с Dojo 1.8. Мы не можем легко изменить эту версию, поэтому мне, вероятно, понадобится пример из версии dgrid, которая поставляется с Dojo 1.8. – Nzall
Я проверил changeLog. Мы используем dGrid 0.3.14. – Nzall
@Nzall обновил сообщение с дополнительной информацией. –