Posted on 2006-08-17 12:15
大大毛 阅读(418)
评论(0) 编辑 收藏 所属分类:
ASP.NET
问题:
页面中会遇到实现单选/多选的方法,不幸的是选择单选或多选是动态决定的,例如实现投票,需要从vote表中取出数据,从而决定当前的投票是多选还是单选。
实现这种功能最简单的方法就是放上两个panel容器,一个放checkboxlist,一个放radiobuttonlist,根据检索到的数据实现开关显示。
解决方法:
使用System.Web.UI.WebControls.ListControl可以轻松的实现动态的定制。
protected
void
Page_Load(
object
sender, EventArgs e) {
bool
isSingle
=
false
;
System.Web.UI.WebControls.ListControl list
=
null
;
if
(isSingle) {
list
=
new
RadioButtonList();
}
else
{
list
=
new
CheckBoxList();
}
this
.Panel1.Controls.Add(list);
if
(
!
IsPostBack()) {
rebindData(list);
}
}
private
void
rebindData(ListControl ctl) {
ctl.Items.Add(
new
ListItem(
"
文本
"
,
"
值
"
);
//
或者在这里进行数据绑定ctl.DataSource.
}
后记:
ASP.NET中规定服务端控件必须放置在Form runat="server"之内,因此动态添加时,this.Controls.Add(new Control())是不可以的,必须放入容器中,例如上面的Panel或者页面的Form中this.form1.Controls.Add...。