using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Web.UI;

namespace Ant.Frame
{
    public static class GetValue
    {
        public static T GetControlValue<T>(Control page, T enty)
        {
            List<Control> conlist = new List<Control>();
            foreach (Control ctrol in page.Controls)
            {
                conlist.Add(ctrol);
            }
            return GetCollection(conlist, enty, "");
        }
        public static T GetControlValue<T>(Control page, T enty, string lbl)
        {
            List<Control> conlist = new List<Control>();
            foreach (Control ctrol in page.Controls)
            {
                conlist.Add(ctrol);
            }
            return GetCollection(conlist, enty, lbl);
        }
        /// <summary>
        ///不知道控件的级次进行赋值
        /// </summary>
        /// <param name="pages"></param>
        /// <param name="enty"></param>
        public static T GetControlValue<T>(List<Control> pages, T enty)
        {
            return GetCollection(pages, enty, "");
        }

        private static T GetCollection<T>(List<Control> page, T enty, string lbl)
        {
            int level = 0;
            return ControlCollection(page, level, enty, lbl);
        }
        private static T ControlCollection<T>(List<Control> oldMenus, int level, T entity, string lbl)
        {
            foreach (Control menu in oldMenus)
            {
                SelectControl con = new SelectControl(ControlType.Ext, menu);
                entity = con.GetResult<T>(entity, lbl);
                int controlnum = menu.Controls.Count;
                if (controlnum == 0)
                    level++;
                else
                {
                    List<Control> conlist = new List<Control>();
                    foreach (Control ctrol in menu.Controls)
                    {
                        conlist.Add(ctrol);
                    }
                    ControlCollection<T>(conlist, level, entity, lbl);
                }
            }
            return entity;
        }
    }
}