示例#1
0
        /// <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();
            }
        }
示例#2
0
        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);
            }
        }