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

下面我粘贴了一个函数,根据函数调用shownames('a')在datagrid中显示数据。 DataGrid不会刷新像shownames('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"); 
                                }); 
                        */  


                        }); 
                }); 
 }


谢谢,拉贾


你不应该按照你发布的方式刷新网格!

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

我经常使用这个批量来刷新网格:

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
}

它也可能与你的代码一起工作,但你可能需要做一些改动。

链接地址: http://www.djcxy.com/p/60457.html

上一篇: grid.startup() not working for different data in the Dojo data grid

下一篇: jQuery click events firing multiple times