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
- asp.net web控件数据绑定
- ASP.NET - 将数据绑定到 TreeView Web 服务器控件
- ASP.NET 数据绑定 Web 服务器控件概述
- asp.net数据绑定控件
- ASP.NET 数据绑定控件
- ASP.NET数据绑定控件
- Asp.Net 数据绑定控件
- ASP.NET Web数据控件
- asp.net 2.0教程 数据绑定控件
- ASP.NET 数据绑定控件介绍
- ASP.NET数据绑定菜单控件
- ASP.NET数据绑定控件(传智播客)
- ASP.Net数据绑定控件小结
- Asp.net--数据绑定控件Repeater
- Asp.net--数据绑定控件ListView
- Asp.net--数据绑定控件DataList
- Asp.Net控件GridView1绑定数据
- asp.net数据控件 数据绑定控件比较
- MySQL免安装版配置方法
- 十个随机数字求和
- java实现排列组合
- 2.生日蜡烛
- zzuoj 10452: "分"数 【dp】
- asp.net web控件数据绑定
- 广告轮播
- C++和JAVA在内存管理上的特点
- mysql sqlserver oracle分页语句
- php保存session
- 4.快排
- php中iconv函数使用方法
- 线索树任意节点插入左右孩子
- MCMC与Metropolis-Hastings 算法