【问题标题】:Using C#, how can I read the content of dynamic created textboxes?使用 C#,如何读取动态创建的文本框的内容?
【发布时间】:2010-12-21 13:50:23
【问题描述】:

喂,

我创建了一些具有标准内容的动态文本框。

有谁知道当我按下一个按钮时如何阅读这些文本框的内容(假设用户修改了标准内容)?

非常感谢。

杰夫

更新

这就是我创建文本框的方式:

foreach (string name in listOfNames)
{
   TextBox tb = new TextBox();
   tb.Text = name;
   tb.BorderStyle = BorderStyle.None;
   tb.BorderWidth = 0;
   tb.Font.Name = "Arial";
   tb.Font.Size = 8;
}

【问题讨论】:

  • WinForms, WPF, ASP.NET, Silverlight, XNA, Windows Phone 7, Xbox 360, Zune, ...????尝试更具体一点,到处都有文本框和按钮。还要定义动态。这些文本框是如何创建的,最好提供一个代码 sn-p。
  • 您使用的是什么技术? ASP.NET?赢形式? WPF/Silverlight?
  • 除了达林的评论,他们是怎么添加的?你知道名字吗?
  • 我正在使用 ASP.NET,我已经更新了标签,对不起
  • @Jeff,标签没问题,现在,下一部分是您必须提供的关于如何创建这些文本框的代码 sn-p。

标签: c# asp.net textbox dynamic-data


【解决方案1】:

具体取决于您使用的技术。然而,这个概念仍然非常相似,但对于 ASP.NET 来说会更有趣一些。

WinForms/WPF/Silverlight

维护动态创建的文本框列表,当按下按钮时,您可以遍历文本框列表并读取Text 属性以获取用户输入。

ASP.NET - 在标签更新后,这部分似乎最适合您的要求。

对于 ASP.NET,您需要在 OnInit 方法的覆盖中创建文本框,这应该在每次回发时发生。然后在Button.Click 事件中,您可以从您在 OnInit 函数中创建的文本框中读取用户输入。您需要确保在每次回发时使用相同的ID 创建控件。

【讨论】:

  • +1 - 表示“相同 ID”...如果没有一致的 ID,动态控件将呈现,但会出现各种问题(例如仅在您单击元素两次时才会触发的事件)。跨度>
【解决方案2】:

您需要确保在每次回发时重新创建文本框。

如果您不重新创建它们,您将无法访问它们的属性或事件。

创建动态控件的最佳位置是页面Init 事件处理程序。

我建议阅读ASP.NET page life cycle


更新(更新后的问题)

确保为文本框设置一个ID(以及另外一个),以便您以后可以参考它们。

我也看不到您将这些控件添加到页面的哪个位置。

【讨论】:

  • @Richard Friend - 我从来没有这样做过,但话又说回来,我可能是错的。你能给我指出任何这样说的文章吗?
  • 我知道在 Init 中创建是可行的,但是很多控件依赖 EnsureChildControls(),后者又查看 ChildControlsCreated,后者又调用 CreateChildControls。见singingeels.com/Articles/…
  • @Richard Friend - 他还说(几乎在文章的开头)页面 Init 事件处理程序是最好的地方。使用 CreateChildControls 用于解决带有异常的特定问题。
  • 他确实这么说,但最后的总结表明要使用 CreateChildControls。再次,这是一个似乎不清楚的领域,但 ms 表示这就是它的意义 msdn.microsoft.com/en-us/library/…
【解决方案3】:

Request.Form 是键值对的集合,表示从 ASP.NET 请求返回的所有数据。如果您访问它,您可以获得任何值,无论其控件是在 ASPX 代码中指定还是在代码隐藏文件中动态创建。

如果您在页面生命周期的初始化部分重新创建它们,您还可以将它们的值自动放回其中。如果这样做,它们的值将在 ASP.NET 重新创建页面状态并应用表单中的值时设置。

【讨论】:

    【解决方案4】:

    您应该能够像访问普通控件一样访问它们,您只需要获取对控件的引用即可。 请记住在每次回发时重新创建所有控件。

    this是一篇关于asp.net中动态控件的有用文章

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 2023-03-22
      • 2012-12-23
      相关资源
      最近更新 更多