gwt 편집기 프레임 워크가있는 GWT/GXT를 사용하여 편집기 응용 프로그램을 작성 중입니다. 어떤 경우에는 날짜 목록을 편집해야합니다. 이렇게하려면 GridInlineEditing
을 사용하기로 선택했으나 제대로 작동하지만 gridInlineEditing 내 DateField
에서 일부 형식 유효성 검사를 수행해야합니다.GXT GridInlineEditing 필드 유효성 검사
기본적으로 유효성 검사 결과에 관계없이 CompleteEditEvent
이 실행되면 편집의 기본 동작은 "기록"됩니다. 값이 유효하고 모든 것을하지 않을 때
public class NameValueDTMEditorWidget extends GenericEditableListView<DTM, Date> implements Editor<NameValueDTM> {
private final static DTMProperties props = GWT.create(DTMProperties.class);
ListStoreEditor<DTM> values;
@Ignore
private DateField df = new DateField();
public NameValueDTMEditorWidget(String widgetTitle) {
super(widgetTitle, new ListStore<DTM>(props.key()), props.dtm());
DateTimeFormat dtf = DateTimeFormat.getFormat("yyyyMMddHHmmss");
df.setPropertyEditor(new DateTimePropertyEditor(dtf));
addEditorConfig(df); // parent class method basically doing: editing.addEditor(df), editing is GridInlineEditing
// Modifying grid cell render for a Date
Cell c = new DateCell(DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss"));
getColumnModel().getColumn(0).setCell(c);
values = new ListStoreEditor<DTM>(getStore());
editing.addCompleteEditHandler(new CompleteEditEvent.CompleteEditHandler<DTM>() {
@Override
public void onCompleteEdit(CompleteEditEvent<DTM> event) {
df.validate(); // I force field validation
if (df.getValue() == null || !df.isValid()) { // if value's not valid
getStore().clear(); // clear the store
DTM e = GWT.create(DTM.class);
getStore().add(e); // add a new value
editing.startEditing(event.getEditCell()); // start editing new value
df.forceInvalid(); // force invalid to get invilid display on the field
}
}
});
}
그것은 거의 내가 원하는,이 판에 남아 않습니다 그래서 저는 (분명히 그것을 according to GXT forum을 할 수있는 유일한 방법입니다)이 같은 onCompleteEditHandler
메소드를 오버라이드 (override) 시도 ,하지만 잘못된 값 뒤에 올바른 값을 입력하면 값이 유효하다는 것을 알지만 에디션 모드를 종료하지는 않습니다. 또한 상점을 지우고 새 값을 만드는 대신 잘못된 입력 값을 유지하는 것을 시도해 보았습니다.이 메서드를 사용하면 표시 문제가 있다는 점만 제외하면 정확히 같은 방식으로 동작합니다.
아무에게도이를 수행하는 방법을 알고 있습니까? 또한 String
과 같은 문제가 있습니다.
난 여전히 똑같은 동작을합니다. 문제는 필드 또는 필드 유효성 검사 자체보다 GridInlineEditing에 더 관련이 있다고 생각합니다. – RadASM