3

CRM의 기본 사례 해결 창을 대체하는 사용자 지정 "사례 해결"창이 만들어졌습니다. 내가 한 일은 클릭했을 때 맞춤 HTML 페이지를 여는 내 버튼으로 Resolve Case 리본 버튼을 대체했습니다. 그런 다음 사용자가 해당 페이지에서 Resolve 버튼을 누르면 SOAP 메시지가 생성되어 특정 경우를 해결합니다. SOAP 메시지 후 window.close()를 호출하여 "Resolve Case"창을 닫습니다. 그런 다음 location.reload()를 호출하여 기본 폼이 다시로드되고 리본이 새로 고쳐 지도록합니다. 따라서 기본 사건 해결 창과 마찬가지로 (사용자 관점에서) 작동합니다.CRM 2011 사용자 지정 사례 창에서 게시/리디렉션/패턴 가져 오기 방법

이제 문제가 있습니다. 사용자가 사례를 해결 한 후 다시 활성화 한 다음 다시 확인하면 다음 메시지 (브라우저의 팝업 알림)가 표시됩니다.

"다시 웹 페이지를 표시하려면 브라우저가 사용자의 정보를 다시 보내야합니다. 구매 한 경우에는 취소 버튼을 클릭하여 중복 트랜잭션을 방지하고, 그렇지 않으면 다시 시도를 클릭하여 웹 페이지를 다시 표시하십시오. "

location.reload()를 사용하여 기본 폼을 다시로드하고 중복 된 양식 제출이 발생했기 때문에 문제가 있음을 발견했습니다. location.reload() 대신 window.location = window.location, location.href = location.href 등을 사용하려고했지만 그 중 아무 것도 나를 위해 노력하고 있습니다. 그들은 메인 폼을 새롭게하는 것처럼 보였습니다 (적어도 깜박임). 그러나 리본은 상쾌하지 않았습니다. 또한 Xrm.Page.ui.refreshRibbon()을 사용하려고 시도했지만 차이를 만들지도 않았습니다.

나는 인터넷에서 해결책을 찾았고 사람들은 Post/Redirect/Get pattern에 대해 이야기하고있다. 나는 그것을 구현하는 방법을 명확하게 찾을 수 없었습니다. 그렇기 때문에 당신이 그것을 이해하는 것을 도울 수 있다면, 그리고이 특별한 경우에 그것을 사용하는 방법을 바랄 수 있었으면합니다.

추가 정보 및 코드 샘플이 필요할 경우 제공됩니다.

+0

여기 제공된 솔루션 중 하나가 도움이 되나요? [액션이 지정 자식 폼에 완료된 후 CRM 역학 5.0의 부모 양식을 새로 고치려면 어떻게?] [1] [1] : http://stackoverflow.com/questions/4094058/ 5-0-after-action-is-completed-on = rq = 1 –

+0

window.location 예제를 포함하여 몇 가지 예제 코드도 제공 할 수 있습니까? – Ollie

답변

0

나는 기록의 양식을 새로 고치려면 다음을 사용하는 경향이 (당신은 함수에 포장 할 수 있습니다) :

내 경험에
// Open form with same record. 
var newWindow = Xrm.Utility.openEntityForm(entityName, entityId); 

// After rollup 12, this function returns a boolean instead of 
// the window object. 
if (typeof newWindow === 'boolean') { 
    // The name of the window, when the record is not new, is equal to the record GUID, 
    // without {, } or - characters. When it is equal, were done. Otherwise, close 
    // the current window. 
    if (window.top.name.toLowerCase() === entityId.replace(/[\{\}\-]/gi, "").toLowerCase()) { 
     return; 
    } 

    Xrm.Page.ui.close(); 
    return; 
} 

// Before rollup 12, the function returns a window object. Compare the window objects. 
// When they're not equal, close the current window. 
if (newWindow.top !== window.top) { 
    Xrm.Page.ui.close(); 
    return; 
} 

, 이것은 지속적으로 작동합니다.

관련 문제