当前位置:编程学习 > C#/ASP.NET >>

Repeater中实现单选(repeater radiobutton)



上面是效果图;


<asp:Repeater runat="server" ID="RepFamList" 
                            onitemdatabound="RepFamList_ItemDataBound"><ItemTemplate>
                        <tr class="tr-bg1">
                            <td align="center">
                                <label>
                                    <asp:RadioButton ID="RadioButton1" runat="server" />                                </label>
                            </td>
                            <td>
                               <%#Eval("PaintSize") %>
                            </td>
                            <td>
                                <%#Eval("Code") %>
                            </td>
                            <td>
                                <%= ccl.GetCurrencyChangeSign() %><%# ccl.GetCurrencyChangeRate(Eval("Retail").ToString()) %>
                            </td>
                            <td>
                                <%= ccl.GetCurrencyChangeSign() %><%# ccl.GetCurrencyChangeRate(Eval("NowSale").ToString()) %>
                            </td>
                        </tr>
                        </ItemTemplate></asp:Repeater>




我用的是Repeater绑定数据,里面有一个radiobutton的单选;

当我点击单选时下面的总价格就跟着改变啊!;



问题是我怎么响应Repeater中的Radiobutton事件呢;而且发现这么加Radiobutton每行都可以选的!就不是我想要的只能有一行被选中的  --------------------编程问答-------------------- 单选框添加一个属性GroupName="sel",比如这样,说明都是一个组的,只能有一个可以选的了。

 <asp:RadioButton ID="RadioButton1" runat="server" GroupName="sel"/>
--------------------编程问答--------------------
-----全部手写

<table>
            <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
            <tr>
                <td><%#Eval("Areaname") %></td>
                <td> <asp:RadioButton ID="rdb1" runat="server" AutoPostBack="true" oncheckedchanged="RadioButton2_CheckedChanged"/>
                </td>
            </tr>
            </ItemTemplate>
            </asp:Repeater>
        </table>



protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
    {
        RadioButton rdb = sender as RadioButton;
        RepeaterItem item = rdb.Parent as RepeaterItem;
        int count = Repeater1.Items.Count;
        for (int i = 0; i < count; i++)
        {
            RadioButton rdb1 = Repeater1.Items[i].FindControl("rdb1") as RadioButton;
            if (i != item.ItemIndex)
            {
                rdb1.Checked = false;
            }
        }
    }

--------------------编程问答-------------------- 貌似答案已有。 --------------------编程问答-------------------- 这样绑定想实现单选就在后台写代码。。如上。。
要不
<asp:RadioButton ID="RadioButton1" runat="server" GroupName="sel"/>
换成
<input type="radio" id="rdb" name="aa"/> --------------------编程问答-------------------- 在 RadioButton 的Onclick事件里面显示内容 --------------------编程问答-------------------- onclick中通过JS修改数据
或protected void RadioButton_CheckedChanged(object sender, EventArgs e)
    {
     RadioButton rb=sendr as RadioButton;
RepeaterItem item =rb.NamingContainer as RepeaterItem;

} --------------------编程问答-------------------- 如果是每一个单选按钮都可以被选中,那是因为你没有为它们设置共同的分组名称。给RadioButton控件添加GroupName属性

当选中时触发的动作可以在CheckedChanged事件中处理 --------------------编程问答-------------------- <asp:RadioButton ID="RadioButton1" runat="server"  GroupName="Radio1"/>

我设的!照样每一行都可以选取的;这个要怎么办呢 --------------------编程问答--------------------
引用 8 楼 wjy258378055 的回复:
<asp:RadioButton ID="RadioButton1" runat="server" GroupName="Radio1"/>

我设的!照样每一行都可以选取的;这个要怎么办呢

要用服务器控件的话就在后台checkedchanged事件中加方法如2楼。。否则就换成<input type="radio" id="rdb" name="aa"/> --------------------编程问答--------------------
引用 1 楼 zx75991 的回复:
单选框添加一个属性GroupName="sel",比如这样,说明都是一个组的,只能有一个可以选的了。

HTML code

 <asp:RadioButton ID="RadioButton1" runat="server" GroupName="sel"/>

+1 --------------------编程问答-------------------- [color=#FF0000]单选框添加一个属性GroupName  这种方式是行不通的;根本起不到效果的一样可以多选的;[/color] --------------------编程问答--------------------
引用 11 楼 wjy258378055 的回复:
单选框添加一个属性GroupName 这种方式是行不通的;根本起不到效果的一样可以多选的;

LZ都不看其他答案的!~...? --------------------编程问答-------------------- <input name="x" type=radio value="1">
<input name="x" type=radio value="2">
<input name="x" type=radio value="3">
...
就可以了 --------------------编程问答-------------------- --------------------编程问答--------------------  <asp:Repeater ID="repInfo" runat="server">
        <ItemTemplate>
        <asp:Label ID="lblName" runat="server" Text='<%# Eval("username") %>'></asp:Label>
            <input id='rdo<%# Eval("id") %>' type="radio" name="rdo"/>           
        </ItemTemplate>
    </asp:Repeater> --------------------编程问答-------------------- 上面的很多方法都可行吧
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,