grid.startup()不适用于Dojo数据网格中的不同数据

时间:2013-06-10 16:12:01

标签: dojo

下面我贴了一个函数,根据函数调用showsames('a')显示datagrid中的数据。 DataGrid不会刷新不同的字符,如showsames('b')......等等。或者,如何在不破坏网格的情况下更改数据网格中的数据?

 

function shownames(chr) { 

   require([ 
                        "dojox/grid/EnhancedGrid", 
                        "dojo/store/Memory", 
                        "dojo/data/ObjectStore", 
                        "dojo/_base/xhr", 
                        "dojo/domReady!" 
                ], function(DataGrid, Memory, ObjectStore, xhr){ 
                        var grid, dataStore; 
                        xhr.get({ 
                                url: "http://localhost/xampp/namedb.php?name_idx="+chr, 
                                handleAs: "json" 
                        }).then(function(data){ 
                                dataStore =  new ObjectStore({ objectStore:new Memory({ data: data.items }) }); 
                                 if(dijit.byId("namegrid")) { 
                                        grid.destroy(); 
                                } else { 
                                grid = new dojox.grid.EnhancedGrid({ 
                                        id: "namegrid", 
                                        store: dataStore, 
                                        query: { name_id: "*" }, 
                                        queryOptions: {}, 
                                        structure: [ 
                                                { name: "Name", field: "name", width: "25%" }, 
                                                { name: "Actual Meaning", field: "meaning", width: "50%" }, 
                                                { name: "name_id", field : "name_id", hidden: true } 
                                        ] 
                                }, "alphanames"); 
                                        grid.startup(); 
                                } 
                        /* 
                        dojo.connect(grid, "onRowClick", grid, function(evt){ 
                                                        var idx = evt.rowIndex, 
                                                        item = this.getItem(idx); 
                                                        //  get the ID attr of the selected row 
                                                        var value = this.store.getValue(item, "country_name"); 
                                }); 
                        */  


                        }); 
                }); 
 }


谢谢, 拉加

1 个答案:

答案 0 :(得分:0)

你不应该像发布它一样刷新网格!

首先,您需要在启动时初始化网格。所以网格显示了一些数据。 每次都不要创建网格!!!! 在您的功能必须使用它的方法与网格通信之后!

我经常使用此批量刷新网格:

var grid= // CREATE GRID IN HERE
function yourFunction(id) {
    var prepareQuery={};
    prepareQuery["name_id"]=id; // Create a query based on id
    grid._pending_requests={}; // Stop everything thats loading
    grid._setQuery(prepareQuery); // Pass query to the grid
    grid._refresh(true); // Refresh grid
}

它也可能适用于您的代码,但您可能需要进行一些调整。