2017-02-20 1 views
0

하나의 양식에서 여러 필드의 조회를 필터링하고 싶습니다. 문제는 내가 추가 한 마지막 이벤트 처리기 만 모든 필드에 적용된다는 것입니다. 이 문맥을 사용하여 필드를 얻고 싶습니다. 현재이 필드를 사용하고 있습니다. 그러나 필터는 양식의 "onload"이벤트에 적용됩니다. 여기서는 선택된 컨텍스트/필드가 없습니다. 이를 위해 필터링 된 여러 필드 검색

은이 코드를 사용

function preFilterLookupFunction(executionContext) 
{ 
    var fieldname = new Array("field1","field2"); 
    fLen = fieldname.length; 

    for (i = 0; i < fLen; i++) 
    { 
     var tempName = fieldname[i]; 
     Xrm.Page.getControl(tempName).addPreSearch(function() 
     { 
     addLookupFilterFunction(executionContext); 
     }); 
    } 
} 

function addLookupFilterFunction(executionContext) 
{ 
    var attribute = executionContext.getEventSource(); 
    var tempFieldName = attribute.getName(); 
    alert(tempFieldName) 
    var condition = Xrm.Page.getAttribute("fieldContition").getValue(); 
    if (condition != null) 
    { 
     var fetchXml = "<filter type='and'><condition attribute='fieldContition' operator='eq' value='" + condition + "' /></filter>";    
     Xrm.Page.getControl(tempFieldName).addCustomFilter(fetchXml); 
    }  
} 

내 질문 : 그것은 실행하는 동안 그래서 오른쪽 필드에 필터를 설정할 수 있으며, addLookupFilterFunction의 컨텍스트를 얻을 수 있습니다? 아니면 하나의 양식에 여러 필드를 필터링하는 더 좋은 방법이 있습니까?

+2

멋진 그림 Twiebie

이 코드를 교체합니다. – user7393973

+0

폼의 둘 이상의 조회에 동일한 필터를 적용해야합니까? 나는 그 권리를 얻었습니까? (Btw : 이것은 처음에 작성한 코드와 동일합니다.) – Alex

+0

@Alex 예, 실제로. 하지만 난 seperatly 모든 필드에 대한 이벤트 처리기를 추가하고 싶지 않아요. – Twiebie

답변

0

키는 executionContext 매개 변수를 전달할 필요가 없다는 것입니다.

addLookupFilterFunction(executionContext) 함수 호출에서 executionContext는 preFilterLookupFunction(executionContext) 함수의 인수 변수를 참조하며 이는 for 루프의 모든 반복에 대해 동일합니다. 이에 의해

Xrm.Page.getControl(tempName).addPreSearch(function() 
{ 
    addLookupFilterFunction(executionContext); 
}); 

:

Xrm.Page.getControl(tempName).addPreSearch(addLookupFilterFunction); 
+0

나는 이것을 시도했지만 이전과 같은 결과를 얻는다. 목록의 마지막 컨트롤 만 (오른쪽) 필터를가지고, 다른 모든 컨트롤은 for 루프에서 언급 한 마지막 컨트롤의 필터를 얻는다. 각 컨트롤에 대한 별도의 funtion 추가하여 문제를 무시하고 폼의로드시 호출 할 수 있지만 모든 컨트롤에 대한 루프가있는 함수는 여전히 작동하지 않습니다. – Twiebie

+0

'preFilterLookupFunction'이 언제 호출 되나요? 한 번 폼의로드시에? –

+0

예, 양식의 onLoad에서 한 번 호출됩니다. – Twiebie