我試圖做一個頁面加載一個未定義數量的行到表中,每行包含兩列,一列一個字符串,另一個文本框。當我點擊提交按鈕時,我希望能夠檢索輸入到每個文本框中的值。在asp.net中尋址動態創建的文本框控件C#
上半場我可以做,顯然在真正的代碼中,這將在foreach循環中,並且文本框ID分配了一個唯一的值,我可以稍後重新調用它。
TableCell myCell = new TableCell();
myCell.Text = "StudentID";
TableCell nextCell = new TableCell();
TextBox mytext = new TextBox();
mytext.ID = "TxtBox1";
nextCell.Controls.Add(mytext);
TableRow myRow = new TableRow();
myRow.Cells.Add(myCell);
myRow.Cells.Add(nextCell);
TableStuUploads.Rows.Add(myRow);
當我點擊我的提交按鈕,我嘗試運行這段代碼(只是臨時代碼ATM,概念的東西證明):
TextBox tmptext = (TextBox)FindControl("TxtBox1");
Label1.Text = tmptext.Text;
但是,設置tmptext爲空,我得到一個下一行的空指針異常。那麼我試了
TextBox tmptext = (TextBox)TableStuUploads.FindControl("TxtBox1");
Label1.Text = tmptext.Text;
同樣的錯誤。然後我試了
foreach (Control x in TableStuUploads.Controls)
{
if (x.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox"))
{
Label1.Text = ((TextBox)x).Text;
}
}
但是當調試這個時,我看到TableStuUploads.Controls的計數爲零。
我該如何解決這些動態創建的控件?我已經四處搜尋了,我得到的答案讓我知道了我已經嘗試過的三種解決方案。我哪裏錯了?
好了,你說我需要在頁面加載時運行函數來創建表格? – 2013-02-24 17:54:22
您可以在頁面加載期間運行該函數,但最好在「OnInit」事件中運行該函數。 – 2013-02-24 17:58:50
此外,你有沒有考慮過我提供的Repeater建議? – 2013-02-24 18:02:20