2009-11-27 3 views
1

Dynamics CRM 4.0 Webservice에 대한 질문이 있습니다. CRM에서 ASP.NET으로 레코드를 가져 오는 데 사용하고 있습니다. 요청 및 캐스팅 후에 열 (예 : 연락처)의 값에 액세스 할 수 있습니다.변수를 통해 MS CRM 필드의 값 검색

BusinessEntity be = getBusinessEntity(service, crmGuid, type, colnames); 
contact tmp = (contact)be; 

Response.Write("firstname: " + tmp.firstname + "<BR>"); 
Response.Write("lastname: " + tmp.lastname+ "<BR>"); 

제가 {"firstname", "lastname"}이 경우에 예를 들면 열 CRM (colnames)로부터 검색되어야하는 식별 문자열의 배열을 갖는다.

그러나 colnames은 상당히 커질 수 있으며 (하드 코딩되지 않을 수도 있습니다.) 따라서 하나씩 차례로 살펴보고 싶지 않습니다.

for(int i = 0; i < colnames.length; i++) 
{ 
    Response.write(colnames[i] + ": " + tmp.colnames[i] + "<BR>"); 
} 

같은 것을 사용하는 방법이 있나요 내가 이렇게하면 지금은 TMP의 필드 아니다 COLNAMES 오류가 발생합니다. 아이디어가 있으십니까?

답변

1

리플렉션을 사용하지 않는 한 BusinessEntity를 사용하지 않습니다. DynamicEntity는 Property에서 파생 된 유형별로 열거 가능합니다. 당신은 ... 같은 것을 (I 메모리에서 이런 짓을, 그래서 컴파일하지 않을 수 있습니다) 할 1 (길이)를 참고하기

for(int i = 0; i < colnames.length; i++) 
{ 
    string colName = colnames[i]; 
    foreach(Property prop in tmp) 
    { 
    if (prop.name != colName) 
     continue; 
    if (prop is StringProperty) 
    { 
     var strProp = prop as StringProperty; 
     Response.Write(String.Format("{0}: {1}<BR />", colName, strProp.Value)); 
    } 
    else if (prop is LookupProperty) 
    { 
     ... 
    } 
    ... for each type deriving from Property 

    } 
} 

대답을해야합니다 :

당신이 나에게의 예를 들어 줄 수있는 것을 너는 사용하고있어. 기본 유형 (속성) 만보고있는 경우 value 속성을 볼 수 없으므로 적절한 유형 (StringProperty 등)으로 변환해야합니다.

예를 들어, tmp는 DynamicEntity (Property의 배열을 반환하는 GetEnumerator를 정의 함)입니다. DynamicEntity의 속성에 액세스하는 다른 방법은 문자열 인덱서를 사용하는 것입니다. 이 방법을 사용하는 경우, 당신은 값 (문자열, CrmNumber, 조회)가 아닌 전체 재산 (StringProperty, CrmNumberProperty 등)을 얻을

string firstname = (string)tmp["firstname"]; 

참고 : TMP하십시오.

질문에 대한 답변이 있습니까? 또한 웹 참조가 아닌 SDK 어셈블리를 사용하는 것이 좋습니다. 사용하기가 훨씬 쉽습니다. 그러나 웹 참조를 사용하도록 선택한 경우 SDK 다운로드에는 도우미 클래스 목록이 있습니다. SDK에서 "도우미"를 검색하십시오.

+0

좋습니다. 괜찮습니다. DynamicEntity를 사용하려했지만 DynamicEntities를 사용하여 속성의 실제 값을 얻는 방법을 파악하는 데 너무 오래 걸렸습니다. 의견 있으십니까? 나는 이름과 타입을 얻을 수 있었지만 값은 아니었다. –

+0

나의 의견은 너무 길어서 시체를 보았다. –

+0

내일 미리 살펴 보겠습니다. 미리 감사드립니다! –