2011-12-23 3 views
2

CRM 솔루션을 사용자 지정하는 과정에 있지만 현재 문제가 있습니다. OnSave 이벤트에 의해 트리거되는 JavaScript가 있습니다. 이 자바 스크립트는 양식의 필드를 업데이트하고 다시 저장하려고합니다.OnSave 이벤트에 의해 트리거되는 필드 업데이트 저장

스크립트를 실행하면 변경하려는 필드를 볼 수 있지만 양식이 다시로드되면 해당 필드는 이전 값을 유지합니다. 나는 아래에 약간의 sudo 코드를 넣었다. 다른 누구도이 문제를 겪은 적이 있습니까?

가 된 OnSave 게시 된 코드가 더 복사/붙여 넣기 오류가없는 경우

//Update field 
Xrm.Page.getAttribute("fieldname").setValue(value); 
//Set submit mode to always 
Xrm.Page.getAttribute.setSubmitMode("always"); 
//Force save 
Xrm.Page.data.entity.save(); 

답변

4

, 내 생각이 라인이 내 대답은

Xrm.Page.getAttribute("fieldname").setSubmitMode("always"); 
+1

@ckeller에게 감사드립니다. 나는 그 변화를 만들었지 만 나는 여전히 같은 문제를 겪고있다. 나는 일종의 경쟁 조건이 있다고 생각한다. onsave를 실행하는 매우 짧은 스크립트를 사용하면 업데이트 된 필드가 저장되어 PostRetrieve에 올바르게 표시됩니다. 그러나 좀 더 복잡한 스크립트를 사용하여 다른 엔터티를 쿼리하면 (따라서 더 오래 걸림) PostRetrieve에 업데이트가 저장되지 않습니다. –

+0

사실이 문제를 해결하는 방법을 알아 냈습니다. 저장 이벤트를 방지하고 업데이트 된 필드가 더티인지 아닌지 확인하여 값을 업데이트 한 후 저장을 강제 수행 할 수있었습니다. –

+0

이 문제를 직접 해결 한 적이 있습니까? Async JS로 인해 발생하는 것 같습니다. 누구든지 이것을 처리하는 더 좋은 방법을 알고 있습니까? 저장을 막고 콜백에서 다시 호출을 저장해야하는 것은 어리석은 것처럼 보입니다. 특히 간단한 업데이트 만 수행하면됩니다. – Ant

1

이었다해야

Xrm.Page.getAttribute.setSubmitMode("always"); 

문제가 발생 자기 자신을 도우려는 외침에 더 대답하지 마라. 죄송합니다.

내가 설명한대로 제출 모드를 설정하고 값을 변경하는 순서를 확인합니다. 나타나는 것처럼 submitmode를 먼저 설정 한 다음 값을 할당해야합니다.

이제 변경 사항이 저장됩니다.

관련 문제