逛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; } } }
新聞熱點
疑難解答
圖片精選