【问题标题】:adding controls at runtime in asp.net [closed]在运行时在asp.net中添加控件[关闭]
【发布时间】:2013-01-01 13:19:23
【问题描述】:

我想通过下面形式的代码动态添加控件

lblName   txtName       lblSubject    txtSubject         btnAddNewRow/linkAddNewRow

这样 btAddNewRow/linkAddNewRow 在运行时在当前行下方生成新行。 有人可以以最好的方式提供帮助。 也可以只使用标签而不是表格,即 td th 进行格式化。我使用行只是为了显着。我不打算使用表格行。 请考虑前缀作为控件的类型。 谢谢。

【问题讨论】:

  • What have you tried?你被困在哪里了?没有上下文,“最好的方法”是相当没有意义的——尤其是你试图优化的内容。
  • @Oded 我什至无法开始。但我曾想过使用 datagrid 和 html table 作为可能的解决方案。但是我一直在寻找重复其中的 div 标签和控件以获得更好的格式。
  • 真的不清楚最终结果应该是什么以及为什么需要添加这样的行。请说明您要实现的目标,而不是您要如何实现。
  • 坦率地说,你需要一本关于 ASP.NET 的好书——这里的答案太复杂了。
  • 最好使用中继器控件以格式化方式添加新行

标签: asp.net web-applications c#-3.0


【解决方案1】:

基本上,如果您的意图与数据处理有关,DataGrid 和 GridView 将是不错的选择。

动态添加ROW而不是table实际上并没有太大区别,我可以告诉你,与DataGrid和GridView相比,你会发现它并不完全合适。

如果您真的想动态添加行,则每次单击按钮(添加行按钮或其他)时,页面都会回发,而您刚刚添加的行将消失。

人们通常会在创建表和添加行时使用 session 来存储整个表。

在 Page_Load 中以及在他们添加行之前,他们将从会话中检索整个表。这有助于将数据保留在原始行中。


但这对于您处理几乎每一行控件的 ID、格式、样式等可能会很麻烦,并且考虑一下您何时想要处理验证,这可能是地狱。

我并不是说它不可行,因为我经历过这个。

另一种更简单的方法是创建一个自定义控件,方法是将一整行包括验证、样式和您需要的其他内容放入自定义控件中,然后将其动态添加到页面中(还需要 Session 或 ViewState 来存储它,同样的事情会发生)。

希望这可以帮助您重新考虑您的设计

【讨论】:

  • "人们在建表和添加行的时候通常会使用session来存储整个表。" -> 不是一个好建议。
  • @Gan 因为他们没有其他选择,尤其是在检索以前的数据时,在某些情况下,它不仅仅是文本框,还有下拉列表、复选框......
猜你喜欢
  • 2010-10-09
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
相关资源
最近更新 更多