/// <summary> /// コンストラクタ。 /// </summary> /// <param name="node">データベースノードのインスタンス。</param> public DatabaseProperty(DatabaseTreeNode node) : base(node) { Definition = (DatabaseDefinition)node.Tag; Name = Definition.Name; Func<TreeNode, ProjectTreeNode> recursive = null; recursive = (parent) => { if (parent == null) return null; if (parent is ProjectTreeNode) return (ProjectTreeNode)parent; return recursive(parent.Parent); }; Project = (WarlockProject)recursive(node).Tag; try { var data = Project.LoadDatabase(Definition); if (data is DatabaseClassData) { _DataCount = 1; } else if (data is List<dynamic>) { _DataCount = ( from d in (List<dynamic>)data where d != null select d ).Count(); } else if (data is Dictionary<dynamic, dynamic>) { _DataCount = ( from d in (Dictionary<dynamic, dynamic>)data where d.Value != null select d ).Count(); } } catch (Exception) { } }
/// <summary> /// データベースアイテムのリストを作成する。 /// </summary> /// <param name="project">プロジェクト情報のインスタンス。</param> /// <param name="file">データベースファイル名。</param> /// <returns>データベースアイテムのリスト。</returns> public static List<ListItem> CreateDatabaseItemList( WarlockProject project, string file) { try { var itemDefinition = project.FindDatabaseDefinition(file); if (itemDefinition == null) { return new List<ListItem>(); } List<dynamic> items = project.LoadDatabase(itemDefinition); var ret = new List<ListItem>(); foreach (var i in items) { DatabaseClassData item = i; if (item == null) continue; ret.Add(new ListItem() { Text = String.Format( String.Format( "{{0:{0}}}:{{1}}", new String('0', (items.Count - 1).ToString().Length) ), item.Variables["id"], item.Variables["name"] ), Value = item.Variables["id"] }); } return ret; } catch { return new List<ListItem>(); } }