2012-05-01 1 views
2

У меня есть html-форма, которая делает сообщение на странице aspx, которая использует веб-службы SOAP для подключения к CRM. Код за страницей создает объект в CRM. Я использую IOrganizationService в моем коде.Создание нового объекта с полем типа optionset

Код выглядит

IOrganizationService service = (IOrganizationService)serviceProxy;      
Entity lead = new Entity("lead"); 
string fieldValue = string.Empty; 

foreach (string key in Request.Form.AllKeys) 
{ 
    if (key.Equals(SubmitKey, StringComparison.InvariantCultureIgnoreCase) == false && 
     key.Equals(CRMHostKey, StringComparison.InvariantCultureIgnoreCase) == false && 
     key.Equals(redirectErrorURLKey, StringComparison.InvariantCultureIgnoreCase) == false && 
     key.Equals(redirectSuccessURLKey, StringComparison.InvariantCultureIgnoreCase) == false) 
    { 
     if (!string.IsNullOrEmpty(Request.Form[key])) 
     { 
      fieldValue = Request.Form[key].Trim(); 
     } 
     else 
     { 
      fieldValue = string.Empty; 
     } 

     if (key.Equals("new_contacttypechoices", StringComparison.InvariantCultureIgnoreCase)) 
     { 
      lead[key] = new KeyValuePair<string, int>("Email", 100000000); 
      //OptionMetadata objOM = GetOptionMetadata("lead", "new_contacttypechoices", fieldValue, service); 
      //lead[key] = objOM; 
      //lead[key] = 100000000; //Incorrect attribute value type System.Int32 
      //lead[key] = fieldValue; //Incorrect attribute value type System.String 
     } 
     else 
     { 
      lead[key] = fieldValue; 
     } 
    } 
    newLeadID = service.Create(lead); 
} 

Скриншот поля enter image description here

Я получаю сообщение об ошибке при попытке

lead[key] = fieldValue 

Я получаю сообщение об ошибке при попытке

lead[key] = 100000000 

я получаю сообщение об ошибке при попытке

lead[key] = new KeyValuePair<string, int>("Email", 100000000); 

Я получаю сообщение об ошибке, когда я получаю OptionMetaData и установить, что в сущности. Любые идеи о том, как создать объект с помощью набора параметров?

Благодаря

+0

Какая ошибка у вас? – glosrob

+0

К сожалению, мои аплодисменты, только что заметили встроенные комментарии – glosrob

ответ

3

Зависит от ошибки вы получаете, но если свинец типа Microsoft.Xrm.Sdk.Entity, это может быть, что вам нужно либо заменить существующее значение или добавить новый.

if (lead.Attributes.Contains(key)) 
{ 
    lead[key] = new OptionSetValue(100000000);   
} 
else 
{ 
    lead.Attributes.Add(key, new OptionSetValue(100000000));   
} 

Перечитывая, я заметил, что вы поместили (предположительно) ошибки в комментариях. В этом случае я предлагаю, чтобы проблема заключалась в том, что вам нужно присвоить значение типа OptionSetValue