asp.net web控件数据绑定

来源:互联网 发布:中邮网络培训学院登录 编辑:程序博客网 时间:2024/05/22 13:06
 public class FillControl    {        /// <summary>        /// 遍历页面,给TextBox控件绑定数据        ///  使用方式:BindDataToTextBox(this.Page, l[0]);        /// </summary>        /// <param name="control">控件</param>        /// <param name="entity">实体对象</param>        public void BindDataToTextBox(System.Web.UI.Control control, object entity)        {            bool isProperty = false;  //当前控件是否对应于当前实体属性            object temp = null;            foreach (System.Web.UI.Control c in control.Controls)            {                if (c is TextBox)                {                    //temp = GetValueFromEntity(c.ClientID.ToString().Substring(3), entity);                    isProperty = false;                    temp = GetValueFromEntity(c.ClientID.ToString().Substring(3), entity, out isProperty);                    if (isProperty == false)  //与本实体不相应的控件不做处理                        continue;                    if (temp.GetType() == typeof(DateTime))                    {                        if (Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd").Equals("1755-01-01"))                        {                            ((TextBox)c).Text = "";                        }                        else                        {                            //((TextBox)c).Text = Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd");                            if (temp.ToString().Length > 10 && Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd HH:mm:ss").IndexOf("00:00:00") > 0)                            {                                ((TextBox)c).Text = Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd");                            }                            else                            {                                ((TextBox)c).Text = Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd HH:mm:ss");                            }                        }                    }                    else                    {                        ((TextBox)c).Text = temp.ToString();                    }                }                if (c.HasControls())                {                    BindDataToTextBox(c, entity);                }            }        }        /// <summary>        /// 根据实体属性的值给控件名/ID赋值        /// </summary>        /// <param name="controlID">控件id</param>        /// <param name="entity">实体</param>        /// <param name="isProperty">是否属于实体属性</param>        /// <returns></returns>        private object GetValueFromEntity(string controlID, object entity, out bool isProperty)        {            isProperty = false;            object fieldValue = DBNull.Value;            Type t = entity.GetType();            FieldInfo[] fld = t.GetFields();            PropertyInfo[] prp = t.GetProperties();            if (fld == null && prp == null)            {                throw new Exception("根据实体属性的值给控件名/ID赋值异常");            }            if (fld != null)            {                foreach (FieldInfo f in fld)                {                    if (f.Name.Equals(controlID, StringComparison.CurrentCultureIgnoreCase))  //区分大小写                    {                        fieldValue = f.GetValue(entity);                        isProperty = true;                    }                }            }            if (prp != null)            {                foreach (PropertyInfo f in prp)                {                    if (f.Name.Equals(controlID, StringComparison.CurrentCultureIgnoreCase))  //区分大小写                    {                        fieldValue = f.GetValue(entity, null);                        isProperty = true;                    }                }            }            if (fieldValue != null)                return fieldValue;            else                return "";        }        /// <summary>        /// 给实体属性赋值:由TextBox、DropDownLis控件以及自定义时间控件InputCalendar、可编辑下拉框EdiDDlist值        /// 使用方式:SetEntityForTextBoxAndDropDownList(this.Page, l[0]);        /// </summary>        /// <param name="control">控件</param>        /// <param name="entity">实体对象</param>        public void SetEntityForTextBoxAndDropDownList(System.Web.UI.Control control, object entity)        {            foreach (System.Web.UI.Control c in control.Controls)            {                if (c is TextBox)                {                    SetValueFromEntity(c.ClientID.ToString().Substring(3), ((TextBox)c).Text.Trim(), entity);                }                if (c is DropDownList)                {                    if (((DropDownList)c).SelectedItem != null)                    {                        SetValueFromEntity(c.ClientID.ToString().Substring(3), ((DropDownList)c).SelectedItem.Value.ToString(), entity);                    }                }                if (c.HasControls())                {                    SetEntityForTextBoxAndDropDownList(c, entity);                }            }        }        /// <summary>        /// 根据控件名/ID给实体属性赋值        /// </summary>        /// <param name="controlID"></param>        /// <param name="val"></param>        /// <param name="entity"></param>        private void SetValueFromEntity(string controlID, object val, object entity)        {            if (val != null && val.ToString().Trim() != "")            {                Type t = entity.GetType();                FieldInfo[] fld = t.GetFields();                PropertyInfo[] prp = t.GetProperties();                if (fld == null && prp == null)                {                    throw new Exception("根据实体属性的值给控件名/ID赋值异常");                }                if (fld != null)                {                    foreach (FieldInfo f in fld)                    {                        if (f.Name.Equals(controlID, StringComparison.CurrentCultureIgnoreCase))  //区分大小写                        {                            if (f.FieldType == typeof(int))                            { val = Convert.ToInt32(val); }                            else if (f.FieldType == typeof(decimal))                            { val = Convert.ToDecimal(val); }                            else if (f.FieldType == typeof(bool))                            { val = Convert.ToBoolean(val); }                            else if (f.FieldType == typeof(double))                            { val = Convert.ToDouble(val); }                            else if (f.FieldType == typeof(Single))                            { val = Convert.ToSingle(val); }                            else if (f.FieldType == typeof(float))                            { val = Convert.ToSingle(val); }                            else if (f.FieldType == typeof(DateTime))                            { val = Convert.ToDateTime(val); }                            else if (f.FieldType == typeof(string))                            { val = val.ToString(); }                            f.SetValue(entity, val);                        }                    }                }                if (prp != null)                {                    foreach (PropertyInfo f in prp)                    {                        if (f.Name.Equals(controlID, StringComparison.CurrentCultureIgnoreCase))  //区分大小写                        {                            if (f.PropertyType == typeof(int))                            { val = Convert.ToInt32(val); }                            else if (f.PropertyType == typeof(decimal))                            { val = Convert.ToDecimal(val); }                            else if (f.PropertyType == typeof(bool))                            { val = Convert.ToBoolean(val); }                            else if (f.PropertyType == typeof(double))                            { val = Convert.ToDouble(val); }                            else if (f.PropertyType == typeof(Single))                            { val = Convert.ToSingle(val); }                            else if (f.PropertyType == typeof(float))                            { val = Convert.ToSingle(val); }                            else if (f.PropertyType == typeof(DateTime))                            { val = Convert.ToDateTime(val); }                            else if (f.PropertyType == typeof(string))                            { val = val.ToString(); }                            f.SetValue(entity, val, null);                        }                    }                }            }        }        /// <summary>        /// 遍历页面,给TextBox、DropDownList、CheckBox、RadioButton、CheckBoxList、RadioButtonList控件绑定数据        /// 同时包括自定义时间控件InputCalendar、可编辑下拉框EdiDDlist        /// 采用Value验证方式。对于赋值给CheckBoxList类型控件,entity对应的属性如果有多选项,则以“;”分开        /// 使用方式:BindTextBoxAndDropDownList(this.Page, l[0]);        /// </summary>        /// <param name="control">控件</param>        /// <param name="entity">实体对象</param>        public void BindDataToMixControls2(System.Web.UI.Control control, object entity)        {            bool isProperty = false;  //当前控件是否对应于当前实体属性            object temp = null;            foreach (System.Web.UI.Control c in control.Controls)            {                if (c is DropDownList)                {                    DropDownList drp = (DropDownList)c;                    isProperty = false;                    temp = GetValueFromEntity(c.ClientID.ToString().Substring(3), entity, out isProperty);                    if (isProperty == false)  //与本实体不相应的控件不做处理                        continue;                    foreach (ListItem l in drp.Items)                    {                        l.Selected = false;                        if (l.Value == temp.ToString())                        {                            l.Selected = true;                        }                    }                }                if (c is TextBox)                {                    isProperty = false;                    temp = GetValueFromEntity(c.ClientID.ToString().Substring(3), entity, out isProperty);                    if (isProperty == false)  //与本实体不相应的控件不做处理                        continue;                    if (temp.GetType() == typeof(DateTime))                    {                        if (Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd").Equals("1755-01-01"))                        {                            ((TextBox)c).Text = "";                        }                        else                        {                            if (temp.ToString().Length > 10 && Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd HH:mm:ss").IndexOf("00:00:00") > 0)                            {                                ((TextBox)c).Text = Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd");                            }                            else                            {                                ((TextBox)c).Text = Convert.ToDateTime(temp.ToString()).ToString("yyyy-MM-dd HH:mm:ss");                            }                        }                    }                    else                    {                        ((TextBox)c).Text = temp.ToString();                    }                }                if (c is CheckBox)                {                    bool ischeck = false;                    isProperty = false;                    temp = GetValueFromEntity(c.ClientID.ToString().Substring(3), entity, out isProperty);                    if (isProperty == false)  //与本实体不相应的控件不做处理                        continue;                    if (temp != null && temp.ToString().Trim() != "")                    {                        switch (temp.ToString().Trim().ToUpper())                        {                            case "1":                                ischeck = true;                                break;                            case "0":                                ischeck = false;                                break;                            case "T":                                ischeck = true;                                break;                            case "Y":                                ischeck = false;                                break;                            case "TRUE":                                ischeck = true;                                break;                            case "FALSE":                                ischeck = false;                                break;                        }                    }                    if (ischeck == true)                    {                        ((CheckBox)c).Checked = true;                    }                }                if (c is RadioButton)                {                    bool ischeck = false;                    isProperty = false;                    temp = GetValueFromEntity(c.ClientID.ToString().Substring(3), entity, out isProperty);                    if (isProperty == false)  //与本实体不相应的控件不做处理                        continue;                    if (temp != null && temp.ToString().Trim() != "")                    {                        switch (temp.ToString().Trim().ToUpper())                        {                            case "1":                                ischeck = true;                                break;                            case "0":                                ischeck = false;                                break;                            case "T":                                ischeck = true;                                break;                            case "Y":                                ischeck = false;                                break;                            case "TRUE":                                ischeck = true;                                break;                            case "FALSE":                                ischeck = false;                                break;                        }                    }                    if (ischeck == true)                    {                        ((RadioButton)c).Checked = true;                    }                }                if (c is CheckBoxList)                {                    CheckBoxList cbl = (CheckBoxList)c;                    isProperty = false;                    temp = GetValueFromEntity(c.ClientID.ToString().Substring(3), entity, out isProperty);                    if (isProperty == false)  //与本实体不相应的控件不做处理                        continue;                    string[] strval = temp.ToString().Split(new char[] { ';' });                    foreach (ListItem l in cbl.Items)                    {                        l.Selected = false;                        foreach (string s in strval)                        {                            if (l.Value == s)  //temp.ToString()                            {                                l.Selected = true;                            }                        }                    }                }                if (c is RadioButtonList)                {                    RadioButtonList cbl = (RadioButtonList)c;                    isProperty = false;                    temp = GetValueFromEntity(c.ClientID.ToString().Substring(3), entity, out isProperty);                    if (isProperty == false)  //与本实体不相应的控件不做处理                        continue;                    foreach (ListItem l in cbl.Items)                    {                        l.Selected = false;                        if (l.Value == temp.ToString())                        {                            l.Selected = true;                        }                    }                }                if (c.HasControls())                {                    BindDataToMixControls2(c, entity);                }            }        }        /// <summary>        /// 给实体属性赋值:由TextBox、DropDownList、CheckBox、RadioButton、CheckBoxList、RadioButtonList以及Lable控件值        /// 同时包括自定义时间控件InputCalendar、可编辑下拉框EdiDDlist        /// 对于CheckBoxList类型控件,entity对应的属性如果有多选项,则以“;”分开        /// 使用方式:SetEntityForTextBoxAndDropDownList(this.Page, l[0]);        /// </summary>        /// <param name="control">控件</param>        /// <param name="entity">实体对象</param>        public void SetEntityForMixControls2(System.Web.UI.Control control, object entity)        {            foreach (System.Web.UI.Control c in control.Controls)            {                if (c is TextBox)                {                    SetValueFromEntity(c.ClientID.ToString().Substring(3), ((TextBox)c).Text.Trim(), entity);                }                if (c is DropDownList)                {                    if (((DropDownList)c).SelectedItem != null)                    {                        SetValueFromEntity(c.ClientID.ToString().Substring(3), ((DropDownList)c).SelectedItem.Value.ToString(), entity);                    }                }                if (c is CheckBox)                {                    SetValueFromEntity(c.ClientID.ToString().Substring(3), ((CheckBox)c).Checked, entity);                }                if (c is RadioButton)                {                    SetValueFromEntity(c.ClientID.ToString().Substring(3), ((RadioButton)c).Checked, entity);                }                if (c is CheckBoxList)                {                    StringBuilder val = new StringBuilder();                    foreach (ListItem item in ((CheckBoxList)c).Items)                    {                        if (item.Selected == true)                        {                            val.Append(";");                            val.Append(item.Value.Trim());                        }                    }                    if (val.ToString() != "")                    {                        SetValueFromEntity(c.ClientID.ToString().Substring(3), val.ToString().Substring(1), entity);                    }                }                if (c is RadioButtonList)                {                    if (((RadioButtonList)c).SelectedItem != null)                    {                        SetValueFromEntity(c.ClientID.ToString().Substring(3), ((RadioButtonList)c).SelectedItem.Value.ToString(), entity);                    }                }                if (c.HasControls())                {                    SetEntityForMixControls2(c, entity);                }            }        }    }

0 0
原创粉丝点击