2009-07-14 4 views
2

나는 어제 모든 것을 시험해 보았고, 지연 목록을 위해 SmartGWT와 SQL 데이터베이스를 통합하려고 시도했지만 구현 방법을 알 수 없었다. (및 example of a lazy list)SmartGWT와 SQL을 사용하여 Lazy List를 구현하는 방법

내가 원하는 것은 전 세계의 수많은 "사이트"목록을 만드는 것입니다. 문제는 아마도 약 백만 가지가 될 것이므로 한 번에 가능한 한 적게로드하려고합니다. 내 DB의 각 사이트에는 주소가 있으므로 (국가 -> 주 -> 도시 -> 사이트) 트리 구조로 정렬하려고합니다. 레벨을 내려갈 때마다 다음 레벨의 모든 것을 요구하는 DB에 대한 질의가있을 것입니다 (국가의 사이트가 선택된 모든 도시 든 아니면 지금까지의 사이트 든).

도움을 주시면 대단히 감사하겠습니다.

: 예제에서 링크 된 폴더와 리프는 요소의 유형이며 폴더, 폴더를 유지하는 방법은 무엇입니까?

답변

3

잠시 후 나는 마침내 그것을 얻었다. 나는 다음 레벨을위한 모든 TreeNodes의 이름을 나타내는 일련의 문자열을 제공하는 자체 RPC를 작성했다.

그래서 엔트리 포인트가 될 것이다 :

private NodeServiceAsync nodesRpc; //The RPC that grabs more nodes 
private Tree data; //The data structure to hold all of the nodes 
private ColumnTree list; //The GUI element that is shown on in the browser 
public void onModuleLoad() { 
    nodesRpc = (NodeServiceAsync) GWT.create(NodeService.class); 
    data = new Tree(); 
    list = new ColumnTree; 

    list.setAutoFetchData(true); 
    list.setLoadDataOnDemand(true); 

    list.addNodeSelectedHandler(new NodeSelectedHandler() { 
     public void onNodeSelected(NodeSelectedEvent event) { 
      if(/*Node is folder and hasn't been opened before*/) { 
       //Get More Nodes   
       AsyncCallback<String[]> callback = new NodeGetter<String[]>(); 
       nodesRpc.getData(event.getNode(), callback); 
      } 

      else if(/*Node is not a folder (at the end) */) { 
       //Do something else 
      } 
     } 
    }); 
    list.setData(data); //Make the GUI Element Represent The Data Structure 
    RootPanel.get().add(list); //Add to screen 
} 

서버 측에서 serverlet는 문자열 배열로 결과 집합을 해석, 실행 한 질의를 생성하고 다시 전달한다. 모든 콜백은 클라이언트 측에서 다시 그 배열을 TreeNode 배열로 변환하고 클릭 한 원래 노드에 연결해야합니다. 마지막으로 GUI 요소가 새 노드로 다시 그려집니다.

때로는 수백 개의 노드가 쿼리 된 곳에서 표시되는 경우에도 노드로드 사이에 다운 시간이 거의 없음에도 놀랐습니다 (1 초 미만).

3

참고 :이 상자 (Java 서버 플랫폼 용)와 같은 SQL 연결을 포함하는 제품의 Pro 버전도 있습니다. 여기 쇼케이스 :

http://www.smartclient.com/smartgwtee/showcase/ 

프로 제품의 SQL 커넥터 수요/데이터 페이징, 검색, 4 개 CRUD 작업에 부하뿐만 아니라 포함 된 기존 데이터베이스 테이블에 대한 작업 SQL 데이터 소스를 생성 할 수있는 데이터 소스 마법사 JDBC 설정을 입력하면됩니다.

참고 Pro 제품에는 SQL이 필요하지 않으므로 연결할 수있는 것 중 하나 일뿐입니다.

관련 문제