Как получить parentaccountid из учетной записи, используя queryexpression и silverlight - PullRequest
0 голосов
/ 11 августа 2011

Мой запрос возвращает account.name, account.account и account.parentaccountid.

Я использую Silverlight и CRM2011.

Теперь у меня возникают проблемы, чтобы узнать, как извлечьзначение из атрибута parentaccountid.

У меня есть файл silverlightextensionmethods.cs, включенный в мой проект VS, и я использую GetAttributeValue<Guid>("parentaccountid"), чтобы получить значение из parentaccountid.

Возвращенное значениепусто.

У кого-нибудь есть идеи, как этого добиться?

Я могу получить любое другое значение атрибута, но parentaccountid в учетной записи и parentcustomerid в контакте делают мою жизнь очень трудной.

Код: ПЕРВЫЙ Я СОЗДАЮ ЗАПРОС ВЫРАЖЕНИЯ:


string temp="name;accountid;parentaccountid";
string[] fields = temp.Split(';');
 QueryExpression query = new QueryExpression()
 {
           EntityName = entity,
          ColumnSet = new ColumnSet { Columns = new System.Collections.ObjectModel.ObservableCollection<string>(fields) },

         Criteria = new FilterExpression
          {
              FilterOperator = LogicalOperator.And,
             Conditions = 
             {
                   new ConditionExpression
                   {
                                AttributeName = parentidfield,
                                Operator = ConditionOperator.Equal,
                                Values = { id }
                   }
              }
           }
 };

 OrganizationRequest req = new OrganizationRequest();
 req.RequestName = "RetrieveMultiple";

 req["Query"] = query;

 service.BeginExecute(req, new AsyncCallback(GetChildren_ExecuteCallBack), service);

СЛЕДУЮЩИХ ЧИТАТЬ, ЧТОБЫ ЧИТАТЬ ЗНАЧЕНИЯ ОТВЕТ ФОРМЫ

void GetChildren_ExecuteCallBack(IAsyncResult childresult)
        {
            List<TreeRecord> listc = new List<TreeRecord>();
            try
            {
                OrganizationResponse childresponse = ((IOrganizationService)childresult.AsyncState).EndExecute(childresult);
                EntityCollection childresults = (EntityCollection)childresponse["EntityCollection"];

                if (childresults.Entities.Count > 0)
                {
                    TreeConfig sitm = new TreeConfig();
                    string sdisplay = "";
                    string[] fields = "".Split(';');
                    string sid = "";
                    string pid = "";
                    foreach (Entity childentity in childresults.Entities)
                    {
                        foreach (TreeConfig sitem in Configs)
                        {
                            if (sitem.EntityName == childentity.LogicalName)
                            {
                                sitm = sitem;
                            }
                        }

                        TreeRecord childitem = new TreeRecord();
                        string sValue = "";
                        sdisplay = "name;accountid;parentaccountid"; 
                        fields = sdisplay.Split(';');
                        sid =  "accountid";
                        pid = "parentaccountid";

                        int i = sdisplay.Split(';').Length;

                        for (int j = 0; j < i; j++)
                        {
                            try { sValue += childentity.GetAttributeValue<string>(fields[j]) + " "; }
                            catch (Exception ex)
                            {
                                //s = "sValue haku: " + ex.Message.ToString();
                                //this.ReportMessage(s.ToString());
                            }
                        }
                        childitem.Name = sValue;


                        childitem.EntityName = childentity.LogicalName;
                        childitem.Level = sitm.Level;
                        childitem.ParentEntityName = sitm.EntityName;
                        childitem.Color = sitm.Color;
                        childitem.RecordId = childentity.GetEntityId<Guid>(sid);

                        try { childitem.ParentId = childentity.GetAttributeValue<Guid>(pid); }
                        catch
                        {
                            //sb.AppendLine("guid: parentid tietoa ei löydy");
                            //this.ReportMessage(sb.ToString());
                        }
                        listc.Add(childitem);

                    }

                }
            }

1 Ответ

3 голосов
/ 24 августа 2011

Вместо

childentity.GetAttributeValue<Guid>(pid)

используйте

childentity.GetAttributeValue<EntityReference>(pid)
...