コード例 #1
0
        private ResultTreeNodeModel ConvertToTreeNodeModel(object obj, PropertyData propertyData)
        {
            if (propertyData.GetUnderLyingType().IsSimpleType() || obj == null)
            {
                return(new ResultTreeNodeModel
                {
                    Name = propertyData.Name,
                    Value = obj == null ? "null" : obj.ToString(),
                    Type = propertyData.FriendlyTypeName
                });
            }

            if (obj is IEnumerable enumerable && !(enumerable is BsonDocument))
            {
                int count = enumerable.Cast <object>().Count();

                var rowDoc = new ResultTreeNodeModel
                {
                    Name  = propertyData.Name + "[" + count + "]",
                    Value = null,
                    Type  = propertyData.FriendlyTypeName
                };
                var innerQueryResult = QueryResult.ToQueryResult(obj);
                rowDoc.Children.AddRange(ConvertToTreeNodeModels(innerQueryResult));
                return(rowDoc);
            }
コード例 #2
0
        public List <ResultTreeNodeModel> ConvertToTreeNodeModels(QueryResult queryResult)
        {
            var nodes      = new List <ResultTreeNodeModel>();
            int rowCounter = 0;

            if (queryResult.IsBsonDocuments)
            {
                foreach (BsonDocument bsonDoc in queryResult.RawResults)
                {
                    var node = new ResultTreeNodeModel
                    {
                        Name            = "(" + rowCounter++ + ") {..}",
                        RawName         = bsonDoc["_id"].ToString(),
                        Value           = "",
                        Type            = bsonDoc.BsonType.ToString(),
                        BsonDocument    = bsonDoc,
                        IsValue         = false,
                        BsonUpdateQuery = bsonDoc["_id"].ToString()
                    };
                    node.Children.AddRange(ConvertBsonDocumentToTreeNodeModels(bsonDoc, node));
                    node.Children.ForEach(c => c.Parent = node);
                    nodes.Add(node);
                }
            }
            else
            {
                foreach (List <object> rowResults in queryResult.Results)
                {
                    var node = new ResultTreeNodeModel
                    {
                        Name  = "(" + rowCounter++ + ") {..}",
                        Value = "",
                        Type  = queryResult.Type.ToString()
                                .Replace("System.Linq.IQueryable`1[", "")
                                .Replace("MongoSharp.Query.", "")
                                .Replace("]", "")
                    };
                    node.Children.AddRange(ConvertToTreeNodeModels(rowResults, queryResult.Properties));

                    nodes.Add(node);
                }
            }

            return(nodes);
        }
コード例 #3
0
        void treeListView1_CellRightClick(object sender, BrightIdeasSoftware.CellRightClickEventArgs e)
        {
            if (!IsBsonMode || e.Model == null)
            {
                return;
            }

            var rootNode = e.Model as ResultTreeNodeModel;

            if (rootNode == null)
            {
                return;
            }

            while (rootNode.Parent != null)
            {
                rootNode = rootNode.Parent;
            }

            _currentModel = rootNode;

            e.MenuStrip = cmsRightClick;
        }