[英]Accessing dynamically created textboxes text
我偶然發現了asp.net表單的問題。
在我的表單中,最終用戶選擇了要動態創建的多個文本框 ,這些都可以通過以下代碼正常工作:
protected void txtAmountSubmit_Click(object sender, EventArgs e)
{
int amountOfTasks;
int.TryParse(txtAmountOfTasks.Text, out amountOfTasks);
for (int i = 0; i < amountOfTasks; i++)
{
TextBox txtAddItem = new TextBox();
txtAddItem.ID = "txtAddItem" + i;
txtAddItem.TextMode = TextBoxMode.MultiLine;
questionNine.Controls.Add(txtAddItem);
txtList.Add(txtAddItem.ID);
}
}
但是,這也給我帶來了一個小問題,稍后在表單中單擊“提交”按鈕,我將結果發送到需要聯系的指定人員(使用smtp電子郵件)。 同樣, 在我試圖從這些動態創建的文本框中檢索文本之前 ,這部分也很好。
我嘗試過的
我曾嘗試使用此msdn訪問服務器控件ID方法,但是此方法不起作用。
我試圖將這些新文本框添加到列表中,但是我不確定在其中包含文本時如何更新這些文本框。 因此,因此我的結果返回null。
我還嘗試過更改我希望能正常工作的代碼的調用方式:
string textboxesText = string.Join("\n", txtList.Select(x => x).ToArray());
然后在我的串聯字符串(電子郵件正文)中調用:
textboxesText
問題
由於它們是動態創建的,因此我很難用它們的ID來調用它們,例如:txtExampleID.Text,而且由於我每次都必須將ID遞增一個(因此它們不能互相覆蓋),所以事情變得很復雜。對我來說有點困難。
我不是在尋求代碼解決方案,而是希望在正確的方向上使用指針,因為我仍在學習。
綜上所述:我需要從動態創建的文本框中獲取文本,然后將其添加到電子郵件正文中。
問題在於,每次都需要在頁面的Load
事件中重新創建這些文本框,以便可以將事件和值都掛鈎並進行檢索。
我認為,對於您而言,最直接的方法是擴展您已經嘗試過的想法#1。 用足夠的信息構建這些控件的List
,以在Load
重新創建它們 ,但是您需要將該List
存儲在ViewState
或Session
。
ViewState["DynamicControls"] = list;
要么
Session["DynamicControls"] = list;
如果可以的話,我將使用ViewState
,因為它在用戶離開頁面時被銷毀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.