首页 新闻 会员 周边 捐助

一个类的属性为另一个方法的变量名时该如何获取值 ?

0
[已解决问题] 解决于 2012-05-30 21:36

我定义了一个实体类,在窗口列表里定义的N多的Textbox,第个TextBox都有一个前缀TB,去除TB后为列名,也是实体类的属性名,我现在想实现这个类属性的动态的赋值,请问如何实现?谢谢

不能迷糊的主页 不能迷糊 | 初学一级 | 园豆:158
提问于:2012-05-15 16:23
< >
分享
最佳答案
0
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;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

利用反射,自己改进一下就可以了

奖励园豆:5
xu_happy_you | 菜鸟二级 |园豆:222 | 2012-05-15 17:04

不太明白,能否指点一下。TextBox.text怎么赋的值,ModelBase是一个什么对像

不能迷糊 | 园豆:158 (初学一级) | 2012-05-16 09:58

@第八技术: ModelBase是实体的基类,其实就是一个空类,所有实体继承它;

 

你看这篇博客应该可以满足你的需求http://www.cnblogs.com/henq/archive/2009/08/31/1557726.html

xu_happy_you | 园豆:222 (菜鸟二级) | 2012-05-16 10:30
其他回答(1)
0

楼上强人啊!  大牛!

土豆屋 | 园豆:354 (菜鸟二级) | 2012-05-17 22:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册