2013-07-26 2 views
0

내가 ZK 프레임 워크에 대한 새로운 간단한 일을 구현하기 위해 노력하고 있지만, ZK의 다른 접근 방식은 내 마음을 불허되어있어 클릭합니다. 모든 그리드 필드는 편집 가능한 텍스트 박스이며 Person의 이름과 성 (2 컬럼)으로 채워집니다. 내가하려는 것은 다음과 같습니다 :업데이트 콩 속성

- 변경된 모든 값을 Person의 이름과 성 속성을 존중하도록 바인딩하는 "모두 저장"버튼을 구현하십시오.

간단히 "모두 저장"을 클릭하고 변경된 값을 모두 저장하십시오. 그러나 버튼 클릭 전에는 아무 것도 바꾸고 싶지 않으므로 텍스트 상자에는 @save가 없으며 단지 @load 만있을 것입니다.

내가 지금까지 한 일 : - 텍스트 상자의 onChange 이벤트에서 임시 Person 객체의 속성 (이름 또는 성)에 텍스트 상자의 값을 저장하고 해당 Person을 changedPersonsList에 추가합니다. SaveAll 버튼을 클릭하면 내 모델의 Person이 changedPersonsList Person으로 바뀝니다. 그러나 ID 필드를 구현하지 않고 어떤 Person이 어떤 것인지 알 수 없습니다.

SaveAll에서 레이블 값을 행 번호와 함께 보낼 수 있으면 모든 것이 쉬울 것입니다. 당신은 조건 키워드와 데이터 바인딩의 타이밍을 제어 할 수 있습니다

답변

1

..

다음
<textbox value="@load(vm.text) @save(vm.text, before='saveAll')"/> 
<button onClick="@command('saveAll')"/> 

우리가 값을 저장해야 할 때 조정하기 before 조건을 사용 : 그것은 (정상처럼) 변화하지 않을 때 그러나 saveAll 명령이 실행되기 직전입니다.

자세한 내용은 ZK documentation에서 확인할 수 있습니다.

+0

답변에 많은 감사드립니다. 나는 아무도 ZK에 대해서 ZK 포럼이나 ZK 포럼에 대해 아무런 대답을하지 않을까 걱정하기 시작했습니다. 도전 과제는 그리드 셀의 변경 사항을 모델에 직접 저장하지 않고 추적하는 방법입니다. 각 행에 양식 바인딩을 시도한 다음 리플렉션을 사용할 때까지갔습니다. 이 예제에 "Save All"버튼을 추가하기 만하면됩니다 : http://www.zkoss.org/zkdemo/grid/inline_editing 버튼을 클릭하기 전에 변경 사항을 커밋하지 않아도됩니다. – Reek