您的位置:首页 > 其它

如何在DataList中控制单选按钮(Radio)

2007-02-28 19:24 405 查看
在网上看了很多关于如何在DataList中创建和控制Radio的文章,这里也说说我在实际应用中的解决方案。当然,方法都是人想出来的,如果哪位达人有更好的方法,希望可以交流交流。

背景:
网上很多帖子都问在DataList(或者DataGrid)的ItemTemplate列中嵌入单选按钮,如何能实现单选功能。我们知道,由于DataList的内部原因(我们这里不深究),当页面发送到客户端的时候,会为它的每一个DataListItem中的控件的Name属性自动赋值。
例如,DataList的ID为“DL”,嵌入DataList的单选按钮的Name值我们设为“radio”, 假设数据邦定后有3个DataListItem,那当页面发送到客户端的时候页面上的三个单选按钮的Name可能分别为"DL_ctl0_radio","DL_ctl1_radio","DL_ctl2_radio"。如此我们等到了三个完全不同的单选按钮,根本不可能实现三个按钮的单选效果。

解决方案:
我的解决方案就是我们在DataList数据绑定的时候动态写入Html代码。具体操作如下:
我们通常为了排版的方便经常会在ItemTemplate列中先放入一个HtmlDataTable,然后再在各个表格(HtmlTableCell)内放入我们需要的控件。但是这里,我们需要你将其中一个表格设为服务器控件(例如:ID为CellForRadio)以便在后台可以获取得到。
接着就是在数据绑定时向CellForRadio写入Html代码,如下所示:

private void DL_MyReport_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
private void btn_Execute_Click(object sender, System.EventArgs e)
{

for(int i = 0; i<DL.Items.Count; i++)
{
HtmlInputRadio rad_selected = (HtmlInputRadio)DL.Items[i].FindControl("CellForRadio").Controls[0];
if(rad_selected.Checked)
{
//DoSomething
}
}

}
如此,我们就可以像使用普通控件一样使用操作单选按钮了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: