1

データベースへのクエリに基づいて AJAX 呼び出しから応答を取得した後にデータをロードする EnhancedGrid があります。
最初のリクエストを行うと、データがグリッドに正しく入力されていることがわかります。ただし、クエリを変更しても以前のデータが読み込まれます。私の応答は、JSON でデータベースから正しいデータを返します。

私はすべての可能な方法で試し、firebug を使用してデバッグしましたが、出力を取得できませんでした。同様の投稿を検索してみましたが、それでもうまくいきませんでした。
以下にコードを貼り付けます。

_initialiseGrid:function(){

var layout = [
              {'name': 'Project Name', 'field': 'projectName', 'width': '200px'},
              {'name': 'Date Created', 'field': 'createdDate', 'width':       '100px',formatter:this.formatDate},
              {'name': 'Comments', 'field': 'senderComments', 'width': '250px',editable:true}                    
             ];

 dataGrid = new dojox.grid.EnhancedGrid({
            id: 'JoinProjectGrid',
            structure: layout,
            rowSelector: '20px',
            plugins: {indirectSelection: {headerSelector:true}}},
            document.createElement('div'));

}

_loadData:function(response){

     var projectList=response.retrievedList;
     var rowData = {
                    identifier: "projectId",
                    items: projectList
                   };
     dataStore = new dojo.data.ItemFileWriteStore({data: rowData});
     dataGrid.set("store",dataStore);
     dojo.byId("gridDivForJoin").appendChild(dataGrid.domNode);
     dataGrid.startup();

   }    

私は使ってみました:

dataGrid.setStore(dataStore) 

これは2番目のリクエストでは機能しないため、新しいデータをロードしていないが前のデータを表示する dataGrid.set("store",dataStore) を使用しました。

clearOnClose:true, urlPreventCache:true 

グリッドを更新し、以下のコードを使用して、2 番目の要求でストアをクリアします。

 var newStore = new dojo.data.ItemFileReadStore({data: {  identifier: "",  items: []}});
  dataGrid.setStore(newStore);
4

1 に答える 1

0

追加したらうまくいきました

dataGrid.render()
于 2012-11-11T07:20:39.970 に答える