2011-05-04 3 views
1

스마트 gwt 2.4를 사용하여 소규모 앱을 개발 중입니다. 저는 HTML이 풍부하고 브라우저 간 문제를 피하기 위해 다른 HTML 관련 RIA보다 현명한 선택을 택했습니다. 내 앱에 2 페이지가 있습니다. 처음에 사용자가 페이지 1에 입력 한 세부 정보는 페이지 2에 표시되어야하는 데이터를 가져 오는 데 사용되며 그 이후에는 변경해야 할 모든 변경 사항을 페이지 2 자체에서 만들 수 있습니다. 사용자는 새로운 데이터 세트를 얻기 위해 페이지 1로 되돌아 갈 필요가 없다. 1) 이제 페이지간에 이동하는 방법은 무엇입니까? 나는이 페이지들을 두 개의 분리 된 모듈로 정의했다. 나는 1 페이지에서 2 페이지로 데이터를 전달할 필요가있다. 효율적인 방법이 있는가? 2) 내 페이지 중 하나에서 두 개의 자동 완성 콤보 상자를 정의했습니다. 콤보 상자 중 하나의 데이터는로드시 가져오고 두 번째 데이터는 첫 번째 콤보 상자의 값에 따라 달라집니다. 변경 사항을 추가하고 첫 번째 콤보 상자의 이벤트 리스너를 변경하려고 시도했지만 모든 문자 유형에 대해 두 이벤트가 모두 실행됩니다. 사용자가 값을 선택하면 데이터를 가져와야합니다.스마트 gwt 시작하기

public void onModuleLoad() 
{ 
     final ComboBoxItem category = new ComboBoxItem("categoryName", "Category"); 
     category.setTitle("Select"); 
     category.setChangeOnKeypress(false) ; 
     category.setType("comboBox"); 
     category.setWidth(250); 
     category.setIcons(icon); 
     category.setChangeOnKeypress(false); 
     final ComboBoxItem subCategory = new ComboBoxItem("subCategoryName", "Sub Category"); 
     subCategory.setTitle("Select"); 
     subCategory.setType("comboBox"); 
     subCategory.setWidth(250); 
     subCategory.addClickHandler(new com.smartgwt.client.widgets.form.fields.events.ClickHandler() 
     { 
      @Override 
      public void onClick(com.smartgwt.client.widgets.form.fields.events.ClickEvent event) 
      { 
        // call to servlet[url] to get the sub categories for the selected category. 
        RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, "url"+ selectedCategoryName); 
        try { 
         requestBuilder.sendRequest(null, new RequestCallback() { 

          @Override 
          public void onResponseReceived(Request request, Response response) 
          { 
            String xmlText = response.getText(); 
            // Code to handle the received response. 
          } 

          @Override 
          public void onError(Request request, Throwable exception) 
          { 
           exception.printStackTrace(); 

          }}); 
        } catch (RequestException e) { 
         e.printStackTrace(); 
        } 
        catch (Exception e) { 
         e.printStackTrace(); 
        } 


      } 
     }); 
     category.addChangeHandler(new ChangeHandler() 
     { 
      @Override 
      public void onChange(ChangeEvent event) 
      { 
       if(null!=event.getValue() && event.getValue()!="") 
       { 
        selectedCategoryName = event.getValue().toString(); 
        System.out.println(selectedCategoryName); 
       } 
      } 
     }); 
} 

여기에 값이로드 될 때 가져올 콤보 상자 범주가 있습니다. 사용자가 콤보 상자에 입력하여 범주를 선택하면 컨트롤은 드롭 다운에 일치하는 값을 표시하여 도움이됩니다. 모든 키를 누를 때마다 이벤트가 시작됩니다. 입력 된 값을 인쇄하기 위해 syso를 추가했습니다. 사용자가 카테고리를 선택했을 때만 하위 카테고리를 가져와야합니다.

모든 포인터가 정말 유용 할 것입니다. 감사합니다

답변

1

두 번째 질문 : 귀하의 필요에 따라이 link에 따라 모듈을 구현할 수 있다고 생각합니다. 또는 변경된 이벤트를 처리하여 직접 구현하려는 경우, 당신이 사용할 수있는 키를 누를 때마다에 변경 이벤트를 발사 중지 :

나는이 [링크] (HTTP에 따라 내 콤보를 구현 한
comboBoxItem.setChangeOnKeypress(false); 
+0

: // www.smartclient.com/smartgwt/showcase/#styled_combobox_category). 내 문제는 모든 키를 누를 때마다 변경 이벤트가 발생한다는 것입니다. 내가 고양이를 찾고 있다고 해. C, A, T 각각 3 번씩 해고 당합니다. 청중에게 내가 CAT를 선택한 사실을 알리는 이벤트가 필요합니다. CAT 값을 받으면 CAT [첫 번째 값]을 기반으로 데이터를 가져 오기위한 또 다른 요청을 시작합니다. 현재로서는 그런 식으로 일어나지 않습니다. –

+0

comboBoxItem.setChangeOnKeypress (false);를 구현 했습니까? – RAS

+0

예 .i 시도했습니다. 내 첫 번째 질문에 대한 모든 포인터. –