我的代码
aspx:
<ASP:DATALIST id="MyDataList" runat="server" RepeatColumns="2">
   <ItemTemplate>
<table cellpadding="10" style="font: 10.5pt 宋体">
   <tr>
       <td width="1" bgcolor="BD8672" />
       <td valign="top"><img align="top" src='<%# DataBinder.Eval(Container.DataItem, "image_dir", "{0}") %>' >
       </td>
       <td><input id="image_no_radio" type="radio"  value='<%# DataBinder.Eval(Container.DataItem, "image_no", "{0}") %>' runat="server"/></td>
   </tr>
</table>
    </ItemTemplate>
</ASP:DATALIST>
cs:
private void Button1_Click(object sender, System.EventArgs e)
{
       for (int i=0;i<this.MyDataList.Items.Count;i++)
       {
   if (((HtmlInputRadioButton)this.MyDataList.Items[i].FindControl("image_no_radio")).Checked==true)
   {
        Label1.Text = ((HtmlInputRadioButton)this.MyDataList.Items[i].FindControl("image_no_radio")).Value.ToString();     }
       }
}
看了孟宪会那篇DataGrid的例子,好象不行啊,radio里不加runat="server",cs里取不到这个值了

解决方案 »

  1.   

    楼主:
    为什么一定要用html控件呢,你既然用了Datalist就可以用web窗体控件啊,用web窗体的RadioButton放到datagrid里吧,保证没问题的
      

  2.   

    是datalist啊,试过了啊,不行啊
      

  3.   

    datalist里用html的radio控件,radio还是不能互相排斥
    ---------
    因为单选按钮能互相排斥的原理,是要形成一个组,在此组里面的控件,都属于同一个组名,但放在datalist中,它在生成的时候,将自动替每个控件改名,形成如:datalist1__ctl3_你的控件名
    这样的新名字,名字不同了,组就不存在了(因为名字不同),当然无法互相排斥.但你为什么要用单选框组呢?如果多行数据要仅选中一行的话,你可在每行中放一个隐藏的控件,然后对此行做事件,当点击此行时,更改该隐藏控件的属性值,并且同时将此行的样式变化.这样也是可以的.