我定义了一个实体类,在窗口列表里定义的N多的Textbox,第个TextBox都有一个前缀TB,去除TB后为列名,也是实体类的属性名,我现在想实现这个类属性的动态的赋值,请问如何实现?谢谢
public void Fill(ModelBase M_Base, Panel Panel) { List<string> list = M_Base.ItemList.Keys.ToList<string>(); foreach (string current in list) { if (Panel.FindControl("txt" + current) != null) { if (Panel.FindControl("txt" + current).GetType().ToString() == "System.Web.UI.WebControls.TextBox") { string text = ((TextBox)Panel.FindControl("txt" + current)).Text; MethodInfo method = M_Base.GetType().GetMethod("get_" + current); string a = method.ReturnType.ToString(); if (a == "System.String") { M_Base.ItemList[current] = text; } else { if (a == "System.DateTime") { DateTime dateTime; if (DateTime.TryParse(text, out dateTime)) { M_Base[current] = dateTime; } } else { if (a == "System.Int32") { int num; if (int.TryParse(text, out num)) { M_Base[current] = num; } } else { if (a == "System.Double") { double num2; if (double.TryParse(text, out num2)) { M_Base[current] = num2; } } else { decimal num3; if (a == "System.Decimal" && decimal.TryParse(text, out num3)) { M_Base[current] = num3; } } } } } } }
利用反射,自己改进一下就可以了
不太明白,能否指点一下。TextBox.text怎么赋的值,ModelBase是一个什么对像
@第八技术: ModelBase是实体的基类,其实就是一个空类,所有实体继承它;
你看这篇博客应该可以满足你的需求http://www.cnblogs.com/henq/archive/2009/08/31/1557726.html
楼上强人啊! 大牛!