0

以下に、関数呼び出し shownames('a') に基づいてデータグリッドにデータを表示する関数を貼り付けました。DataGrid は、shownames('b')... などのさまざまな文字に対して更新されません。または、グリッドを完全に破壊せずにデータグリッド内のデータを変更するにはどうすればよいですか?

 

関数 shownames(chr) {

   必要とする([
                        "dojox/グリッド/EnhancedGrid",
                        "道場/店/記憶",
                        "道場/データ/オブジェクトストア",
                        "dojo/_base/xhr",
                        「道場/domReady!」
                ]、関数(データグリッド、メモリ、オブジェクトストア、xhr){
                        var グリッド、データストア;
                        xhr.get({
                                URL: "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();
                                } そうしないと {
                                grid = 新しい dojox.grid.EnhancedGrid({
                                        id: "ネームグリッド",
                                        ストア: データストア、
                                        クエリ: { name_id: "*" },
                                        クエリオプション: {},
                                        構造: [
                                                { 名前: "名前", フィールド: "名前", 幅: "25%" },
                                                { name: "実際の意味", field: "意味", width: "50%" },
                                                { name: "name_id", field: "name_id", hidden: true }
                                        ]
                                }, "英字");
                                        grid.startup();
                                }
                        /*
                        dojo.connect(grid, "onRowClick", grid, function(evt){
                                                        var idx = evt.rowIndex,
                                                        item = this.getItem(idx);
                                                        // 選択した行の ID 属性を取得します
                                                        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 に答える