protected virtual void BuildDataSourceTreeView(TreeNode dataSourceNode, ViewDataSource dataSource, string path) { foreach (ViewDataMember field in dataSource.Fields) { var fieldNode = new TreeNode(field.Caption); field.DataFeed = dataSource.Name; field.Path = $"{path}{field.Name}"; var mapItem = new DataFormatMapItem() { DataMember = field, }; fieldNode.Tag = mapItem; dataSourceNode.Nodes.Add(fieldNode); } foreach (ViewDataSource dataList in dataSource.Lists) { var dataListPath = $"{path}{dataList.Caption}[]\\"; var listNode = new TreeNode(dataList.Caption + "[]") { Tag = dataList }; BuildDataSourceTreeView(listNode, dataList, dataListPath); dataSourceNode.Nodes.Add(listNode); } foreach (ViewDataSource dataList in dataSource.NestedClasses) { var dataListPath = $"{path}{dataList.Caption}\\"; var listNode = new TreeNode(dataList.Caption) { Tag = dataList }; BuildDataSourceTreeView(listNode, dataList, dataListPath); dataSourceNode.Nodes.Add(listNode); } }
protected virtual void BuildDataSourceTreeView(TreeNode dataSourceNode, ViewDataSource dataSource) { bool mapAdded = false; foreach (ViewDataMember viewDataMember in dataSource.Fields) { var dataFormatMapItem = new DataFormatMapItem() { DataMember = viewDataMember }; var fieldNode = new TreeNode(viewDataMember.Caption); if (!MapService.Map.ContainsKey(viewDataMember) || MapService.Map[viewDataMember].Name == "Default") { var displayFormat = MapService.DisplayFormats.FirstOrDefault(f => f.Name == viewDataMember.Name); if (displayFormat != null) { MapService.Map[viewDataMember] = displayFormat; } else { var newViewDisplayFormat = new ViewDisplayFormat() { Name = viewDataMember.Name }; if (viewDataMember.Type.Name.ToString() == "String") { newViewDisplayFormat.Sample = "Abcdefg Hijklmnop"; } else if (viewDataMember.Type.Name.ToString() == "Int32") { newViewDisplayFormat.Sample = "12345"; newViewDisplayFormat.Format = "###"; } else if (viewDataMember.Type.Name.ToString() == "Decimal" || viewDataMember.Type.Name.ToString() == "Double") { newViewDisplayFormat.Sample = "123.456"; newViewDisplayFormat.Format = "###.##0"; } else if (viewDataMember.Type.Name.ToString() == "TimeSpan") { newViewDisplayFormat.Sample = "12:34:56.78"; newViewDisplayFormat.Format = "hh\\:mm\\:ss.fff"; } else if (viewDataMember.Type.Name.ToString() == "Boolean") { newViewDisplayFormat.Sample = "True"; } else if (viewDataMember.Type.Name.ToString() == "Boolean") { newViewDisplayFormat.Sample = "True"; } else if (viewDataMember.Type.Name.ToString() == "TrackState") { newViewDisplayFormat.Sample = "Caution"; } else if (viewDataMember.Type.Name.ToString() == "SeriesType") { newViewDisplayFormat.Sample = "XFinity"; } else if (viewDataMember.Type.Name.ToString() == "RunType") { newViewDisplayFormat.Sample = "Practice"; } else if (viewDataMember.Type.Name.ToString() == "VehicleStatus") { newViewDisplayFormat.Sample = "OnTrack"; } else { Console.WriteLine($"Unrecognized field type: {viewDataMember.Type.Name.ToString()}, field: {viewDataMember.Name}"); } MapService.AddNewFormatToMap(viewDataMember, newViewDisplayFormat); mapAdded = true; } } var viewDisplayFormat = MapService.Map[viewDataMember]; dataFormatMapItem.DisplayFormat = viewDisplayFormat; fieldNode.Tag = dataFormatMapItem; UpdateNodeState(fieldNode, viewDisplayFormat); dataSourceNode.Nodes.Add(fieldNode); } if (mapAdded) { MapService.Save(); } foreach (ViewDataSource dataList in dataSource.Lists) { var listNode = new TreeNode(dataList.Caption + "[]") { Tag = dataList, ImageIndex = ClosedFolderImageIndex, SelectedImageIndex = ClosedFolderImageIndex, }; BuildDataSourceTreeView(listNode, dataList); dataSourceNode.Nodes.Add(listNode); } foreach (ViewDataSource dataList in dataSource.NestedClasses) { var listNode = new TreeNode(dataList.Caption) { Tag = dataList, ImageIndex = ClosedFolderImageIndex, SelectedImageIndex = ClosedFolderImageIndex, }; BuildDataSourceTreeView(listNode, dataList); dataSourceNode.Nodes.Add(listNode); } }