2014-07-22 1 views
0

결과가 도조 1.6 데이터 격자를 통해 표시되는 검색 양식을 구현하려고합니다. 나는 렌더링 작업을하고, 폼에서 ajax 호출을 호출 한 다음 ItemFileWriteStore를 사용하여 콜백 함수에서 Datagrid를 빌드합니다. 내가 그리드를 편집하고 서버에 변경 내용을 유지하려고 할 때검색 폼과 편집 가능한 DataGrid와 함께 JsonRestStore를 사용하는 방법

function search() 
{ 
    var action = './search.json'; 
    dojo.xhrPost({url: action, form:"searchForm", 
        load: function(result) { 
              var newStore = new dojo.data.ItemFileWriteStore({ 
               data: { 
                identifier: "id", 
                items: JSON.parse(result), 
                url:'./search.json' 
               } 
              }); 
              var grid = dijit.byId("searchResultsGrid"); 

              if(grid == null) { 
               var layout = [[ 
                 {'name': 'Id', 'field': 'id', 'width': '50px'}, 
                 {'name': 'Name', 'field': 'name', 'width': '50px',editable: true,}, 
                 {'name': 'Source', 'field': 'source', 'width': '50px',editable: true,}, 
                 {'name': 'Version', 'field': 'version', 'width': '50px',editable: true,} 
                ]]; 

               var grid = new dojox.grid.DataGrid({ 
                id: 'searchResultsGrid', 
                store: newStore, 
                structure: layout, 
                autoHeight:true, autoWidth:true, editable:true, columnReordering:true, 
                rowSelector: '20px' 
               }); 
               grid.placeAt("gridDiv"); 
               grid.startup(); 
              } 
              else { 
               grid.setStore(newStore); 
              } 
             } 
    }); 
} 

지금, 아무것도 ItemFileWriteStore으로 발생하지 않습니다. 따라서 JsonRestStore로 전환하여 계속 유지하려고합니다.

하지만 질문은, 내 양식을 JsonRestStore에 연결하는 방법 또는 다른 말로하면 동적 쿼리를 JsonRestStore에 전달하는 방법이 있습니까? JsonRestStore에서 검색 양식을 제출할 때 데이터를 가져오고 검색 양식의 값을 기반으로합니다.

미리 감사드립니다.

답변

0

dojo.store.JsonRest 저장소를 사용합니다. dojox.grid.DataGrid와 JsonRest 저장소를 사용하려면 다음과 같은 dojo.data.ObjecStore에 포장해야합니다

var newStore = new dojo.store.JsonRest({ 
    target: '/search/', 
    idProperty: 'id' 
}); 
newStore = new dojo.data.ObjectStore({ 
    objectStore: newStore 
}); 

는 이제/검색/대상이 REST URL이 있어야합니다./search /에 대한 백엔드는 GET, PUT, POST, DELETE 요청을 지원할 수 있어야 함을 의미하는 REST를 지원할 수 있어야합니다. Dojo 1.10의 경우 http://dojotoolkit.org/reference-guide/1.10/quickstart/rest.html을 살펴 보지만 백엔드 구현 방법은 비슷해야합니다.

일단 데이터를 검색하고 업데이트하려면 REST 백엔드를 구현해야합니다. 그리드에 쿼리 매개 변수를 설정하여 REST 백엔드에 쿼리 매개 변수를 보낼 수 있습니다.

grid.setQuery({ 
    param1: 1, 
    param2: 2 
}); 

는 URL/검색을 사용하도록 JsonRest 저장소를 트리거 /? PARAM1 = 1 & PARAM2 = 2 그리드의 데이터 새로 고침 세트를로드합니다.

관련 문제