簡體   English   中英

訪問動態創建的文本框文本

[英]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電子郵件)。 同樣, 在我試圖從這些動態創建的文本框中檢索文本之前 ,這部分也很好。

我嘗試過的

  1. 我曾嘗試使用此msdn訪問服務器控件ID方法,但是此方法不起作用。

  2. 我試圖將這些新文本框添加到列表中,但是我不確定在其中包含文本時如何更新這些文本框。 因此,因此我的結果返回null。

  3. 我也看了看SO如其他問題, 不過它們通常是為WPF或WinForms的,而不是我的問題,asp.net(這通常不是一個問題,但我並不需要從每一個文本頁面中的textbox控件,只是動態創建的控件)。

我還嘗試過更改我希望能正常工作的代碼的調用方式:

string textboxesText = string.Join("\n", txtList.Select(x => x).ToArray());

然后在我的串聯字符串(電子郵件正文)中調用:

textboxesText

問題

由於它們是動態創建的,因此我很難用它們的ID來調用它們,例如:txtExampleID.Text,而且由於我每次都必須將ID遞增一個(因此它們不能互相覆蓋),所以事情變得很復雜。對我來說有點困難。

我不是在尋求代碼解決方案,而是希望在正確的方向上使用指針,因為我仍在學習。

綜上所述:我需要從動態創建的文本框中獲取文本,然后將其添加到電子郵件正文中。

問題在於,每次都需要在頁面的Load事件中重新創建這些文本框,以便可以將事件和值都掛鈎並進行檢索。

我認為,對於您而言,最直接的方法是擴展您已經嘗試過的想法#1。 用足夠的信息構建這些控件的List ,以在Load 重新創建它們 ,但是您需要將該List存儲在ViewStateSession

ViewState["DynamicControls"] = list;

要么

Session["DynamicControls"] = list;

如果可以的話,我將使用ViewState ,因為它在用戶離開頁面時被銷毀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM