0

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

 

功能显示名称(chr){

   要求([
                        "dojox/grid/EnhancedGrid",
                        “道场/商店/内存”,
                        "道场/数据/ObjectStore",
                        "道场/_base/xhr",
                        “道场/domReady!”
                ]、函数(DataGrid、内存、ObjectStore、xhr){
                        变量网格,数据存储;
                        xhr.get({
                                网址:“http://localhost/xampp/namedb.php?name_idx="+chr,
                                句柄为:“json”
                        }).then(函数(数据){
                                dataStore = new ObjectStore({ objectStore:new Memory({ data: data.items }) });
                                 if(dijit.byId("namegrid")) {
                                        grid.destroy();
                                } 别的 {
                                网格 = 新 dojox.grid.EnhancedGrid({
                                        id:“名称网格”,
                                        存储:数据存储,
                                        查询:{name_id:“*”},
                                        查询选项:{},
                                        结构体: [
                                                {名称:“名称”,字段:“名称”,宽度:“25%”},
                                                { name: "实际含义", field: "meaning", width: "50%" },
                                                { 名称:“name_id”,字段:“name_id”,隐藏:true }
                                        ]
                                }, "字母名称");
                                        网格.启动();
                                }
                        /*
                        dojo.connect(网格,“onRowClick”,网格,函数(evt){
                                                        var idx = evt.rowIndex,
                                                        item = this.getItem(idx);
                                                        // 获取选中行的ID attr
                                                        var value = this.store.getValue(item, "country_name");
                                });
                        */  


                        });
                });
 }


谢谢,拉贾

4

1 回答 1

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
}

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

于 2013-06-12T05:37:41.280 回答