2010-12-22 98 views
0

我有一個帶有dijit.Tree和dojox.grid.EnhancedGrid的頁面,它們都連接到ItemFileWriteStore中的某些分層數據。當用戶點擊樹中的項目時,我希望能夠僅顯示網格中該項目的直接子項及其屬性。這在數據庫應用程序中是一種相當常見的模式,但我找不到任何這樣的例子,或者我正在尋找錯誤的地方。在dojo中過濾詳細記錄

看看網格文檔,我在DataGrid上看到了一個setQuery方法。然而,看着ItemFileReadStore的查詢語法,我沒有看到任何讓我指定只抓取給定項目的子項的東西。有什麼我錯過了,是否有另一種方式來做到這一點?

使用dojo 1.5。

(編輯爲清楚起見)

+0

有沒有人有答案?我在這裏死去... – user4815162342 2010-12-27 21:13:19

回答

1

那麼,既然沒有人回答,我想到了我自己的解決方案。我認爲這應該是DataStore框架應該內置的東西,所以我在ItemFileReadStore中找到了一個合適的方法來掛接,並將其擴展爲添加一些查詢選項以允許詳細查詢。

下面的代碼添加了兩個可用的QueryOptions參數(parentItem,parentAttribute),它們爲詳細向下查詢指定父項和父屬性。它們與「深層」選項不兼容,因爲這兩者的組合的預期結果尚不清楚。

 dojo.extend(dojo.data.ItemFileReadStore, { 
     _getItemsArray: function(/*object?*/queryOptions) { 
      if (queryOptions) { 
       if (queryOptions.deep && queryOptions.parentItem) { 
        throw "Invalid query: a drill-down search can not be 'deep'" 
       } 
       if (queryOptions.deep) { 
        return this._arrayOfAllItems; 
       } 
       if (queryOptions.parentItem) { 
        if (!queryOptions.parentAttribute) { 
         throw "Invalid query: an attribute is required for drill-down searches."; 
        } 
        return this.getValues(queryOptions.parentItem,queryOptions.parentAttribute); 
       } 
      } 
      return this._arrayOfTopLevelItems; 
     } 

    }); 

上述代碼適用於任何人使用。