首页 > 编程 > .NET > 正文

遍历获取ASP.NET页面控件的名称及值

2024-07-10 13:13:11
字体:
来源:转载
供稿:网友

逛csdn的时候碰见有人在求助这个问题,特分享一下经验。
如果直接用Page.Control 获取的到只是最顶层的页面元素,而真正的拖拉放上去的文本框或Label之类的控件,还隐藏在这些顶层页面元素的里面,所以需要再次遍历。
函数及使用方法如下,结果保存在这里选择了HashTable的方式。

protected void Page_Load(object sender, EventArgs e)    {        getAllControlValue(this);    }    Hashtable getAllControlValue( object PageOrUserControl )    {        Hashtable rtn = new Hashtable();        foreach (Control ctr in (PageOrUserControl as Page).Controls)        {            getControlValue(ctr, rtn);        }        return rtn;    }    void getControlValue(Control ctrIn,Hashtable ht)    {        foreach (Control ctr in ctrIn.Controls)        {            Type controlType = ctr.GetType();            switch (controlType.ToString())            {                case "System.Web.UI.WebControls.TextBox":                    TextBox controlTextBoxObj = (TextBox)ctr;                    string controlTextBoxName = controlTextBoxObj.ID;                    string controlTextBoxValue = controlTextBoxObj.Text;                    ht.Add(controlTextBoxName, controlTextBoxValue);                    break;                case "System.Web.UI.WebControls.Label":                    Label controlLabelObj = (Label)ctr;                    string controlLabelName = controlLabelObj.ID;                    string controlLabelValue = controlLabelObj.Text;                    ht.Add(controlLabelName, controlLabelValue);                    break;                //case "其他类型":                //    其它类型 controlTextBoxObj = (其它类型)ctr;                //    string controlTextBoxName = controlTextBoxObj.ID;                //    string controlTextBoxValue = controlTextBoxObj.Text;                //    ht.Add(controlTextBoxName, controlTextBoxValue);                //    break;                default:                    break;            }        }    }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表