public void OpenSObject(string sObject,string Relation,string TabFilters)
        {

            _sObjectDef = new SForceEdit.SObjectDef(sObject);

            // set the tab filters to overide the filters if they are set
            if (TabFilters != "") _sObjectDef.TabFilters = TabFilters;

            if(_paged) _sObjectDef.AddPaging();            
            if(_filter) _sObjectDef.Filter = cbFilter.Text;

            AddFields();

            _sObjectDef.Parent = Relation;
        }
        private void BuildDataSidebar()
        {

            //Create an Expander for Document/Matter/Request - do them in order so we know the Id of the next one ...
            Fields.Children.Clear();



            if (this._d.demoinstance == "general" || this._d.demoinstance == "isda")
            {
                // assume that the parent is the Document
                _sDocumentObjectDef = new SForceEdit.SObjectDef("Document__c");
                if (_sDocumentObjectDef != null)
                {
                    GenerateFields(_sDocumentObjectDef);
                    LoadData(_parentId, _sDocumentObjectDef);
                }
            }
            else
            {
                // hack for the Document version if the parent is document OR version doesn't exit
                _sDocumentObjectDef = new SForceEdit.SObjectDef("Version__c");

                if (_parentType == "Document__c" || _sDocumentObjectDef == null)
                {
                    _sDocumentObjectDef = new SForceEdit.SObjectDef("Document__c");
                    GenerateFields(_sDocumentObjectDef);
                    LoadData(_parentId, _sDocumentObjectDef);
                }
                else
                {

                    if (_parentType == "Version__c")
                    {
                        GenerateFields(_sDocumentObjectDef);
                        LoadData(_parentId, _sDocumentObjectDef);

                        //If we have a Matter add that in
                        if (_DocumentRow != null && _DocumentRow.Table.Columns.Contains("Matter__c"))
                        {
                            string id = _DocumentRow["Matter__c"].ToString();
                            _sMatterObjectDef = new SForceEdit.SObjectDef("Matter__c");
                            GenerateFields(_sMatterObjectDef);
                            LoadData(id, _sMatterObjectDef);

                            //Add in the Activities
                            // _sActivityObjectDef = new SForceEdit.SObjectDef("Task");
                            // AddGrid(_sActivityObjectDef);
                            // GenerateFields(_sActivityObjectDef);
                            // LoadData(id, _sActivityObjectDef);

                        }

                        //If we have a Request add that in
                        if (_MatterRow != null && _MatterRow.Table.Columns.Contains("Request__c"))
                        {
                            string id = _MatterRow["Request__c"].ToString();
                            _sRequestObjectDef = new SForceEdit.SObjectDef("Request__c");
                            GenerateFields(_sRequestObjectDef);
                            LoadData(id, _sRequestObjectDef);
                        }
                    }
                    else if (_parentType == "Matter__c")
                    {
                        _sMatterObjectDef = new SForceEdit.SObjectDef("Matter__c");
                        GenerateFields(_sMatterObjectDef);
                        LoadData(_parentId, _sMatterObjectDef);

                        //If we have a Request add that in
                        if (_MatterRow != null && _MatterRow.Table.Columns.Contains("Request__c"))
                        {
                            string id = _MatterRow["Request__c"].ToString();
                            _sRequestObjectDef = new SForceEdit.SObjectDef("Request__c");
                            GenerateFields(_sRequestObjectDef);
                            LoadData(id, _sRequestObjectDef);
                        }
                    }
                    else if (_parentType == "Request__c")
                    {
                        _sRequestObjectDef = new SForceEdit.SObjectDef("Request__c");
                        GenerateFields(_sRequestObjectDef);
                        LoadData(_parentId, _sRequestObjectDef);
                    }
                }
            }
        }
        public void SetupAxAttachment(string ParentType)
        {
            //Attachment has no layout and we arent showing it as a data form anyway
            //so use the Sobject but don;t use AddFields and just build the object here
            //should move to the SobjectDef class as a special case

            _sObjectDef = new SForceEdit.SObjectDef("Attachment");
            _sObjectDef.Parent = "Parent";
            _sObjectDef.ParentType = ParentType;

            //Set up the field in the grid
            List<string> searchCols = new List<string>();
            string settingColumns = Globals.ThisAddIn.GetSettings("Attachment", "Columns");

            if (settingColumns == "")
            {
                settingColumns = "Name|Owner_Name|LastModifiedDate|LastModifiedBy_Name";
            }

            _sObjectDef.GridColumnFields = new List<string>();
            this.radGridView1.Columns.Clear();
            this.radGridView1.AutoGenerateColumns = false;

            sfPartner.DescribeSObjectResult dsr = _d.GetSObject(_sObjectDef.Name);
            _sObjectDef.Label = dsr.label;
            _sObjectDef.PluralLabel = dsr.labelPlural;

            // describe object doesn't have the url for attachment, get the url from the binding and add {ID}
            _sObjectDef.Url = _d.GetURL() + "/{ID}";

            _sObjectDef.AddField("Id","","Id","string",true,false,false,null);
            _sObjectDef.AddField("ParentId", "", "ParentId", "string", true, false, false, null);
            _sObjectDef.AddField("ContentType", "", "ContentType", "string", true, false, false, null);

            foreach (string settingCol in settingColumns.Split('|'))
            {
                //Find the Field
                sfPartner.Field f = null;

                string fldname = settingCol;
                if(settingCol.EndsWith("_Name")){
                    fldname = settingCol.Replace("_Name", "") + "Id" ; //dont have to worry about __c to __r can't have custom on attachment
                }

                for (int x = 0; x < dsr.fields.Length; x++)
                {
                    if (dsr.fields[x].name == fldname)
                    {
                        f = dsr.fields[x];
                    }
                }

                if (f!=null)
                {

                    //add the field
                    _sObjectDef.AddField(f.name,
                                               f.relationshipName,
                                               f.label,
                                               f.type.ToString(),
                                               true,
                                               f.updateable,
                                               f.createable,
                                               f
                                               );

                    //If this is a Relation add extra field to the field list with the Name
                    if (f.type == sfPartner.fieldType.reference)
                    {
                        _sObjectDef.AddField(f.relationshipName + ".Name",
                            f.relationshipName,
                            f.label,
                            f.type.ToString(),
                            true,
                            false,
                            false,
                            null);
                    }

                    //keep a list of columns
                    _sObjectDef.GridColumnFields.Add(settingCol);

                    SForceEdit.SObjectDef.FieldGridCol fgc = _sObjectDef.GetField(settingCol);

                    GridViewDataColumn column = new GridViewDataColumn();
                    column.DataMemberBinding = new Binding(fgc.Name);
                    column.Header = fgc.Header;
                    column.UniqueName = fgc.Name;
                    if (fgc.DataType == "date")
                    {
                        column.DataType = typeof(DateTime);
                        column.DataFormatString = "d";
                        column.TextAlignment = TextAlignment.Center;
                    }
                    if (fgc.DataType == "datetime")
                    {
                        column.DataType = typeof(DateTime);
                        column.DataFormatString = "g";
                        column.TextAlignment = TextAlignment.Center;
                    }
                    if (fgc.DataType == "double")
                    {
                        column.DataType = typeof(Double);
                        column.DataFormatString = "0";
                        column.TextAlignment = TextAlignment.Right;
                    }
                    column.MaxWidth = 300;
                    this.radGridView1.Columns.Add(column);
                }
            }
        }