2014-04-25 1 views
0

smartgwt의 동적 양식에서 양식을 변경/편집 한 양식 만 보내려면 어떻게해야합니까? 예 : 동적 양식에 10 개의 입력란이 있고 2 개의 입력란 만 편집한다고 가정 해 보겠습니다. 그런 다음 양식을 저장하라는 요청에 2 개의 편집/변경된 필드 만 있어야합니다.smartgwt의 저장시 동적 양식의 변경된 양식 필드 만 전송

변경 사항/수정 된 양식 필드 만 요청에 보내는 방법에 대한 아이디어. 아이디어를 공유하십시오 ...

답변

0

양식의 현재 값은 DynamicForm#getValues()으로 액세스 할 수 있습니다.

DynamicForm#rememberValues(), DynamicForm#setValues()DynamicForm#resetValues()도보십시오.


편집 된 값을 얻으려면이 샘플 코드를 사용해보십시오.

public void onModuleLoad() { 

    VLayout vLayout = new VLayout(); 

    ComboBoxItem comboBoxItem = new ComboBoxItem(); 
    comboBoxItem.setShowTitle(false); 
    comboBoxItem.setValueMap("mouse", "cat", "cow", "dog"); 

    TextItem textItem = new TextItem(); 
    textItem.setShowTitle(false); 

    CheckboxItem checkboxItem = new CheckboxItem(); 
    checkboxItem.setShowTitle(false); 
    checkboxItem.setTitle(""); 

    final DynamicForm dynamicForm = new DynamicForm(); 
    dynamicForm.setItems(comboBoxItem, checkboxItem, textItem); 

    vLayout.addMember(dynamicForm); 

    // default values 
    textItem.setValue("abc"); 
    comboBoxItem.setValue("cat"); 
    checkboxItem.setValue(true); 

    // Remember values 
    dynamicForm.rememberValues(); 

    // store default values 
    final Map<?, ?> defaultValues = dynamicForm.getValues(); 

    Button button = new Button("check"); 
    button.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      Map<?, ?> newValues = dynamicForm.getValues(); 

      for (Object key : defaultValues.keySet()) { 
       if (!defaultValues.get(key).equals(newValues.get(key))) { 
        System.out.println(key + " - old value: " + defaultValues.get(key) 
          + " - new value: " + newValues.get(key)); 
       } 
      } 
     } 
    }); 

    vLayout.addMember(button); 

    RootPanel.get().add(vLayout); 
} 

출력 :

isc_TextItem_0 - old value: abc - new value: xyz 
    isc_ComboBoxItem_0 - old value: cat - new value: cow 
    isc_CheckboxItem_0 - old value: true - new value: false 

스냅 샷 :

enter image description here


DSRequest#setOldValues()와보십시오. 테스트하지

샘플 코드 :

DSRequest requestProperties=new DSRequest(); 
    requestProperties.setOldValues(oldValues); 

    dynamicForm.saveData(new DSCallback() { 

     @Override 
     public void execute(DSResponse dsResponse, Object data, DSRequest dsRequest) { 
      ...     
     } 
    }, requestProperties); 
관련 문제