逛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; } } }
新闻热点
疑难解答
图片精选