/// <summary> /// Llena el combo con datos de un query de entidades recursivas (IRecursive). /// </summary> /// <typeparam name="T">El tipo de la entidad a llenar</typeparam> /// <param name="items">Los ítems traidos del query</param> /// <param name="Optional">Si el combo es opcional pone un ítem vacío al comienzo.</param> public void FillRecursive <T>(IEnumerable <T> items) where T : ActiveBaseEntity <T>, IIdentifiable, IRecursive <T> { Clear(); var res = new Dictionary <int, string>(); TreeItem <T> .MakeDictionary(items.GenerateTree(), res); ValueMember = "Text"; if (Optional) { var opt = new ComboItem <T>(true); Items.Add(opt); ItemsTyped.Add(opt); } foreach (var item in res) { T tag = items.Where(x => x.Id == item.Key).First(); string key = item.Key.ToString(); string text = item.Value; AddItem <T>(tag, key, text); } //TODO: Quizás esto sea mejor siempre. if (Optional == false && Items.Count > 0) { SelectedIndex = 0; } if (AutoSizeByContent) { SetDropDownWidth(); } }
public void FillRecursive <T>(CheckedListBox list, IEnumerable <T> items) where T : ActiveBaseEntity <T>, IIdentifiable, IRecursive <T> { list.Items.Clear(); var res = new Dictionary <int, string>(); TreeItem <T> .MakeDictionary(items.GenerateTree(), res); foreach (var item in res) { T tag = items.Where(x => x.Id == item.Key).First(); string key = item.Key.ToString(); string text = item.Value; list.Items.Add(tag); } }