gpt4 book ai didi

c# - 访问动态创建的文本框文本

转载 作者:太空宇宙 更新时间:2023-11-03 11:01:30 26 4
gpt4 key购买 nike

我偶然发现了我的 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. 我试过使用 this msdn access server controls ID method然而,这是行不通的。

  2. 我尝试将这些新文本框添加到列表中,但是我不确定如何在其中包含文本时更新这些文本框。因此,我的结果返回 null。

  3. 我还查看了关于 SO 的其他问题,例如 this但是它们通常用于 WPF 或 winforms,而不是我的 asp.net 问题(这通常不是问题,但我不需要从我页面中的每个文本框控件获取文本,只需要那些动态的创建)。

我也曾尝试更改我希望有效的代码调用方式:

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

然后在我的串联字符串(电子邮件正文)中调用:

textboxesText

问题

因为它们是动态创建的,所以我发现很难通过它们的 ID 来调用它们,例如:txtExampleID.Text,而且我每次都必须将 ID 加一(这样它们就不会相互覆盖)它有让事情对我来说有点困难。

我不是在寻求代码解决方案,我更喜欢在正确方向上的指针,因为我还在学习。

总结一下:我需要从我动态创建的文本框中获取文本,以将其添加到我的电子邮件正文中。

最佳答案

问题是这些文本框每次都需要在页面的 Load 事件中重新创建,以便事件和值都可以 Hook 备份和检索.

对于您的情况,我认为最直接的方法是扩展您已经尝试过的想法 #1。使用足够的信息构建这些控件的 List,以便在 Load重新创建它们,但您需要存储该 ListViewStateSession 中。

ViewState["DynamicControls"] = list;

Session["DynamicControls"] = list;

如果可以的话,我会使用 ViewState,因为它会在用户离开页面时被销毁。

关于c# - 访问动态创建的文本框文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com