日期:2014-05-17  浏览次数:20498 次

救急!如何根据Eval值动态显示不同的控件?
需求是一个投票系统,后台是可以设置多选或单选的,现在的问题是如何根据得到的多选或单选来动态显示为CheckBox或RadioButton呢?

C# code

<td height="23">
<asp:CheckBoxValue ID="CheckBoxOption" Value='<%#Eval("OptionID") %>' runat="server" />
</td>



上面代码是在RepeaterItem中,如果通过if(Eval("state").ToString() == "True")这样的代码去判断是否为多选,就会出现错误提示:Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用,我试了动态加载控件,是可以动态加载的,但我还要在回发中获取动载加载的控件值,查了下资料说动态加载的控件是FindControl找不到的。上面两条路都行不通,怎么办呢?

------解决方案--------------------
?:
三目运算符。
------解决方案--------------------
放一个Literal控件算了,后台根据数据库动态确定Literal.Text的值,用html标签。Request.Form[""]获取值。

要么用PlaceHolder,后台动态往里添加CheckBox或RadioButton

或者用CheckBoxList,后台动态添加Item,确保只能选其一还是可多选。
------解决方案--------------------
在绑定事件里面,动态生成控件,不要在aspx里面写<%#Eval("state").ToString()
------解决方案--------------------
探讨
我试了动态加载控件,是可以动态加载的,但我还要在回发中获取动载加载的控件值,查了下资料说动态加载的控件是FindControl找不到的。上面两条路都行不通,怎么办呢?