添加动态控件

时间:2010-04-23 15:09:38

标签: c# asp.net controls dynamic-controls

我需要构建一个页面,具体取决于用户在页面上的表单上所做的选择,然后显示一组不同的问题供他们回答。

所以说用户从页面编辑的表单中选择原因A,然后需要在页面edit_confirmation上显示问题1和2。但如果他们选择了原因B,则需要显示问题3和4。

我从查询字符串中获取原因代码并设置了switch语句,但我无法在任何地方找到如何输出不同的控件。如果问题1和2应该出现,一个可以是一个文本框,另一个可以是一个复选框,但如果问题3和4应该出现,则可能需要一个下拉列表和一个复选框。

编辑:我将尝试以下一些建议,并将回来标记答案并相应地进行投票。谢谢大家的快速回复。

编辑编辑:rlb.usa和AndrewVos的答案同样有效。我和安德鲁一起去了,因为这似乎是更“合适”的方式。

6 个答案:

答案 0 :(得分:4)

输出不同的控件?哎呀,听起来很痛苦。我认为您正在寻找的术语是动态控件(在代码中创建的控件)。我总是遇到这个问题而不是它的价值。

最常见的做法是在表单上设置所有控件。将每个“问题”或相关问题集都包含在ASP:Panel中。接下来,在您的代码中,您需要做的就是应用您的逻辑并根据您的需要隐藏/显示ASP:Panel s(通过设置Visible属性)。如果适用,您可以在Page_Load上执行此逻辑,或者在更改特定答案时使用此逻辑。

答案 1 :(得分:4)

查看MultiView控件。它允许您添加视图并根据您的要求指定哪一个是可见的。

答案 2 :(得分:1)

您可以使用PlaceHolder控件并在服务器端向其添加相关控件,或者您可以使用style.display设置为none来渲染所有控件,并将相关的控件设置为“阻止”使用客户端javascript

答案 3 :(得分:0)

为什么不根据他们在页面编辑时选择的原因将它们发送到不同的页面?

答案 4 :(得分:0)

一种方法是静态添加控件。根据用户选择隐藏或取消隐藏控件。这种方法最容易实现,但有点难看。

其他方法是动态创建控件并添加它们。您将不得不考虑管理viewstate,因为这些东西可能非常讨厌。

答案 5 :(得分:0)

您可以在page_load事件中设置控件上的visible属性。因此,在switch语句中,您只能看到希望用户看到的控件。

相关问题