public void LoadItems <T>(IEnumerable <T> items, TreeListViewItemCollection Items, Func <T, string> getId, Func <T, string> getParentId, Func <T, string> getDisplayName, Func <T, int> getImageIndex, List <string> lstPropertyName) { //List<string> lstPropertyName = new List<string>(); Items.Clear(); dictItems.Clear(); foreach (var item in items) { var id = getId(item); var displayName = getDisplayName(item); var imageIndex = -1; if (getImageIndex != null) { imageIndex = getImageIndex(item); } var treeListViewItem = new TreeListViewItem(); treeListViewItem.Name = id; treeListViewItem.Text = displayName; treeListViewItem.Tag = item; if (imageIndex >= 0) { treeListViewItem.ImageIndex = imageIndex; } foreach (string propertyName in lstPropertyName) { object obj = PublicMethods.GetPropertyValue(item, propertyName);; string str = ""; if (obj != null) { str = obj.ToString(); } treeListViewItem.SubItems.Add(str); } dictItems.Add(id, treeListViewItem); } foreach (var id in dictItems.Keys) { var item = GetItem(id); var obj = (T)item.Tag; var parentId = getParentId(obj); if (parentId != null) { var parentNode = GetItem(parentId.ToString()); parentNode.Items.Add(item); } else { Items.Add(item); } } }
public void LoadItems <T, K>(IEnumerable <T> items, TreeListViewItemCollection Items, Func <T, string> getId, Func <T, string> getParentId, Func <T, string> getDisplayName, Dictionary <string, string> dictPropertyName, Func <T, int> getImageIndex, Func <T, Color> getForeColor) where K : class { Items.Clear(); dictItems.Clear(); LoadPartItems <T, K>(items, Items, getId, getParentId, getDisplayName, dictPropertyName, getImageIndex, getForeColor); }