2014-04-22 48 views
-1

我已經實現了dgrid。它非常整齊。但是,當我點擊行標題進行排序時,除了一行之外的所有行都消失了。我正在努力弄清楚爲什麼....排序時dgrid行消失

讓我們來試試吧。

DGrid,這是一個基於Dojo數據網格,見http://dojofoundation.org/packages/dgrid/

當使用這個JavaScript和HTML,並連接到可觀察的memstore,網格填充,用幾行很愉快地顯示數據。這些列是可排序的,即您可以單擊行/列標題。然而 - 這就是問題所在 - 當點擊這些行/列標題對行進行排序時,除了一行外,所有行都會消失。

使用內存(dojo/store/Memory)dGrids數據存儲工作正常 - 即行成功排序。但是,當使用Observable(dojo/store/Observable)作爲數據存儲時,排序會導致行崩潰。請看下面的例子。

排序與內存工作的偉大:

function populateGrid(Memory, message) { 
       var featureOne = { 
         "id": message[0].attributes["id"], 
         "Col2": message[0].attributes["Col2"], 
         "Col3": message[0].attributes["Col3"] 
        } 
       var featureTwo = { 
         "id": message[1].attributes["id"], 
         "Col2": message[1].attributes["Col2"], 
         "Col3": message[1].attributes["Col3"] 
        } 

        var data = [feature1, feature2]; 
        var memStore = new Memory({ data: data }); 
        window.queryRecordsGrid.set("store", memStore); 
       } 

使用時,可觀察到出現的錯誤:

var memStore; 

function populateGrid(Memory, message) { 
        var feature = { 
          "id": message[0].attributes["id"], 
          "Col2": message[0].attributes["Col2"], 
          "Col3": message[0].attributes["Col3"] 
         } 

        var data = [feature]; 
        if (!window.memStore) { 
        window.memStore = new Observable(new Memory({ data: data })); 
        window.grid.set("store", window.memStore); 

       } else { 

        window.grid.store.notify(feature, feature.id); 

       } 
        } 
+0

不是。這仍然只是一個口頭描述。請包括[代碼的相關部分](http://stackoverflow.com/help/mcve),並解釋您想要完成的內容以及結果與預期結果的不同之處。包含您收到的任何錯誤消息。請閱讀[問]好問題和Jon Skeet的博客文章[撰寫完美問題]的建議(http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question。 ASPX)。請特別注意「黃金法則」,但我強烈建議您閱讀整篇文章。 –

回答

0

這可能是也可能不是你的問題,但目前在您的商店的物品不有唯一的標識符 - 或者如果他們這樣做,他們沒有正確地被商店拿起。 dojo/store/Memory默認假定商店物品各自具有唯一的id。如果您有其他領域提供獨特的標識符,可以使Memory意識到這一點通過設置idProperty,如:

new Observable(new Memory({ idProperty: "Col1", data: data })); 

也好像假設,當你調用notify但據我可以告訴feature.id存在從你的代碼中,它不存在。

+0

謝謝。上面的代碼有點做作 - 我現在編輯過。我在網格和商店中使用「id」作爲唯一的ID。我還應該注意到onDemandGrid正在被使用。我使用Observable作爲一個「全局」變量,因爲我使用Web套接字在物品到達時將物品推送到網格 - 這非常實用(除了按行摺疊) – Dazxa