2017-04-06 4 views
0

CRM 양식으로 플러그인에서 사용자 정의 메시지를 보내고 있습니다 (일부 유효성 검사 수행).플러그인에서 빈 값으로 작동하지 않는 양식으로 메시지 보내기

여기 사전 업데이트 및 게시물-만들기에 실행 내 플러그인 코드입니다 :

//GetAccounts is a simple method to return accounts based in specified crtitias. 
//In Update event, it will add an extra filter to exclude the current account... 
const string DupeFieldName = "new_approval_status"; 

if (xrmObjects.PluginContext.PrimaryEntityName == Xrm.Account.EntityLogicalName && xrmObjects.PluginContext.Depth == 1 && (xrmObjects.PluginContext.MessageName == "Update" || xrmObjects.PluginContext.MessageName == "Create")) 
{ 
    Entity account; 
    account = (Entity)xrmObjects.PluginContext.InputParameters["Target"]; 

    if (account.Attributes.Contains("name")) 
    { 
     if (GetAccounts(account, xrmObjects.PluginContext.MessageName, "name", account["name"], xrmObjects.Service).Entities.Count > 0) 
     { 
      SetDupeMessage(account, Name); 
      return; 
     } 
    } 

    if (account.Attributes.Contains("websiteurl")) 
    { 
     if (GetAccounts(account, xrmObjects.PluginContext.MessageName, "websiteurl", account["websiteurl"], xrmObjects.Service).Entities.Count > 0) 
     { 
      SetDupeMessage(account, WebSiteExist); 
      return; 
     } 
    } 

    if (account.Attributes.Contains("new_linkedin")) 
    { 
     if (GetAccounts(account, xrmObjects.PluginContext.MessageName, "new_linkedin", account["new_linkedin"], xrmObjects.Service).Entities.Count > 0) 
     { 
      SetDupeMessage(account, LinkedIn); 
      return; 
     } 
    } 


    account[DupeFieldName] = string.Empty; 

} 

속성 '값을 설정하는 간단한 방법 ...

private void SetDupeMessage(Entity account, string message) 
{ 
    account[DupeFieldName] = message; 
    account["new_approved"] = false; 
} 

그리고 내 양식에

,

function dupeDetected(context) { 

    var dupeStatus = Xrm.Page.getAttribute('new_approval_status').getValue(); 

    if (!dupeStatus || dupeStatus == '') { 
     Notify.remove('duplicateWarning'); //Notify is a library that adds notification at form level... 
     return; 
    } 

    var messageParts = dupeStatus.split('|'); 
    var message = messageParts[1]; 
    var fieldName = messageParts[0]; 

    Notify.add(message, 'ERROR', 'duplicateWarning', null); 

}; 
: 나는 new_approval_statusonChange 이벤트에서이 이벤트 핸들러를 뒀다

new_approval_status이 null에서 공백으로 바뀌면이 문제가 발생합니다. 그러나 빈 문자열이나 null에 대한 문자열은 다른 방향으로는 트리거되지 않습니다.

내 플러그인에서 new_approval_status에서 string.Empty 또는 null으로 설정을 시도했지만 이벤트가 그런 방식으로 실행되지 않습니다.

아이디어가 있으십니까?

답변

2

필드를 OK과 같이 설정할 수 있습니다.

이것은 또한 코드가 작동을 보장 할 수 있습니다 ("해야하는데, 또는 뭔가가 누락하고 충만되지 않기 때문에 필드 비어?")

+0

가 어떻게 그 생각을하지 않았다 넘어 나를. 알렉스 고마워. –