开发者

How to retrieve parentaccountid from account using queryexpression and silverlight

My query returns account.name, account.account and account.parentaccountid.

I'm using Silverlight and CRM2011.

Now I'm having trouble to find out how to extract value from parentaccountid attribute.

I have silverlightextensionmethods.cs file included in my VS project, and I'm using GetAttributeValue<Guid>("parentaccountid") to get the value from parentaccountid.

The value returned is empty.

Has anyone any ideas how to accomplish this?

I can get any other attribute value, but parentaccountid in account and parentcustomerid in contact are making my life very difficult.

Code: FIRST I CREATE QUERYEXPRESSION:


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);

NEXT I TY TO READ VALUES FORM RESPONSE

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&开发者_如何学JAVAlt;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);

                    }

                }
            }


Instead of

childentity.GetAttributeValue<Guid>(pid)

use

childentity.GetAttributeValue<EntityReference>(pid)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜