using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Web.UI; using System.Web.UI.WebControls; namespace Ant.Frame { public class NetControl : BaseControl { Control control = new Control(); public NetControl(Control con) { control = con; } /// /// Lable控件 /// /// /// /// public override int SetterControl(List entity, string lbl) { if (string.IsNullOrEmpty(lbl)) lbl = "_"; Label lblcon = new Label(); if (control is Label) { lblcon = (Label)control; string fieldName = control.ClientID.Split('_')[(control.ClientID.Split('_').Length) - 1]; string str = ""; foreach (object obj in entity) { if (string.IsNullOrEmpty(str)) { try { str = obj.GetType().InvokeMember(fieldName, BindingFlags.GetProperty, null, obj, null).ToString(); } catch { str = ""; } } else break; } if (!string.IsNullOrEmpty(str)) { lblcon.Text = str; return 0; } } #region TextBox TextBox txtcon = new TextBox(); if (control is TextBox) { txtcon = (TextBox)control; string fieldName = control.ClientID.Split('_')[(control.ClientID.Split('_').Length) - 1]; string str = ""; foreach (object obj in entity) { if (string.IsNullOrEmpty(str)) { try { str = obj.GetType().InvokeMember(fieldName, BindingFlags.GetProperty, null, obj, null).ToString(); } catch { str = ""; } } else break; } if (!string.IsNullOrEmpty(str)) { txtcon.Text = str; return 0; } } #endregion #region DropDownList DropDownList ddl = new DropDownList(); if (control is DropDownList && control.ClientID.Contains(lbl)) { ddl = (DropDownList)control; string fieldName = control.ClientID.Split('_')[(control.ClientID.Split('_').Length) - 1]; string str = ""; try { str = entity.GetType().InvokeMember(fieldName, BindingFlags.GetProperty, null, entity, null).ToString(); } catch { } if (!string.IsNullOrEmpty(str)) { ddl.SelectedValue = str; return 0; } } #endregion #region CheckBox CheckBox chk = new CheckBox(); if (control is CheckBox && control.ClientID.Contains(lbl)) { chk = (CheckBox)control; string fieldName = control.ClientID.Split('_')[(control.ClientID.Split('_').Length) - 1]; string str = ""; try { str = entity.GetType().InvokeMember(fieldName, BindingFlags.GetProperty, null, entity, null).ToString(); } catch { } if (!string.IsNullOrEmpty(str)) { if (str == "1") chk.Checked = true; if (str == "0") chk.Checked = false; if (str.ToLower() == "true") chk.Checked = true; if (str.ToLower() == "false") chk.Checked = false; return 0; } } #endregion return 0; } public override T GetterControl(T entity, string lbl) { if (string.IsNullOrEmpty(lbl)) lbl = "_"; #region TextBox TextBox txtcon = new TextBox(); List objlist = new List(); T objj = Activator.CreateInstance(); objj = entity; // object objj = Activator.CreateInstance(entity.GetType()); if (control is TextBox && control.ClientID.Contains(lbl)) { txtcon = (TextBox)control; string fieldName = control.ClientID.Split('_')[(control.ClientID.Split('_').Length) - 1]; // PropertyInfo[] propertys = objj.GetType().GetProperties(); PropertyInfo pi = entity.GetType().GetProperty(fieldName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase); if (!object.Equals(pi, null)) { try { if ((Object.Equals(txtcon.Text, null)) || (Object.Equals(txtcon.Text, DBNull.Value))) pi.SetValue(objj, null, null);//为空,但不为Null else pi.SetValue(objj, txtcon.Text, null); } catch { pi.SetValue(objj, null, null);//为空,但不为Null } } } #endregion return objj; } public override List GetterControl(List entity, string lbl) { if (string.IsNullOrEmpty(lbl)) lbl = "_"; #region TextBox TextBox txtcon = new TextBox(); List objlist = new List(); // object objj = Activator.CreateInstance(entity.GetType()); if (control is TextBox && control.ClientID.Contains(lbl)) { txtcon = (TextBox)control; string fieldName = control.ClientID.Split('_')[(control.ClientID.Split('_').Length) - 1]; // PropertyInfo[] propertys = objj.GetType().GetProperties(); foreach (object obj in entity) { //object objj = Activator.CreateInstance(obj.GetType()); PropertyInfo pi = obj.GetType().GetProperty(fieldName); if (!object.Equals(pi, null)) { try { if ((Object.Equals(txtcon.Text, null)) || (Object.Equals(txtcon.Text, DBNull.Value))) pi.SetValue(obj, null, null);//为空,但不为Null else pi.SetValue(obj, txtcon.Text, null); } catch { pi.SetValue(obj, null, null);//为空,但不为Null } objlist.Add(obj); } } } #endregion return objlist; } } }