2016-10-10 7 views
0

を行うことになっているものやっていない私は、次のミックスインは、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; 
     } 
    }); 
}); 

これはOnDemandListできるようにするためにhttp://dgrid.io/tutorials/0.4/single_query/で書かれたものと同じウィジェットですただ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(){});定型とは問題ありません)が、いくつかの理由で、それは最初ifrefresh()に返すので、それが何をしていませんそれはそうなっている。なぜこれが失敗するのか分かりません。 refresh()renderArray()の機能だけでなく、コードを書く必要がありますか?

答えて

0

あなたはdgrid 0.4バージョンの例を使用していますが、同じバージョンのapiも使用していることを願っています。あなたが0.3versionを使用している場合は_StoreMixinには_renderCollectionプロパティが0.3に存在しないように、目のポストの例では動作しません。

は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に変更されましたバージョン。また、この拡張で使用されている '_total`のような他のプロパティもありません。

あなたが達成しようとしていることがわかっている場合は、代替ソリューションを提供することができます。

+0

実際に使用しているdgridのバージョンはわかりません。まだコレクションがない場合は、おそらく0.4より前です。 Dojo 1.8に付属するバージョンです。私たちはこのバージョンを簡単に変更することはできませんので、Dojo 1.8に付属のdgridバージョンの例が必要になるでしょう。 – Nzall

+0

私はchangeLogをチェックしました。我々はdGrid 0.3.14を使用しています。 – Nzall

+0

@Nzallは情報を追加して投稿を更新しました。 –

関連する問題