使用DataList控件绑定时单选按钮不起作用

时间:2010-07-23 10:43:09

标签: c# javascript asp.net

当我尝试绑定数据列表中的单选按钮时,它变为多选,因为即使我使用GroupName相同,它的名称属性也会变得不同。

如何才能将其作为单选按钮。

   <asp:DataList ID="dlRoomNo" runat="server" RepeatColumns="4">
        <ItemTemplate>
           <div class="orboxfour">
                <ul class="boxfour">
                    <li>
                        <asp:RadioButton ID="rdoRoomNo" GroupName="roomNo"
 Text='<%#Eval("Room No")%>' runat="server" />
                    </li>
                </ul>
           </div>                       
        </ItemTemplate>
    </asp:DataList>

2 个答案:

答案 0 :(得分:0)

this question的答案中有很多建议。


我用一些jQuery解决了它,虽然我这样做的方式可能不是最好的方法!

在我的标记中,我有一个带

的脚本块
function SetUniqueRadioButton(current)
{
    $('input:radio').attr('checked', false);

    current.checked = true;
}

然后将脚本附加到ItemDataBound事件中代码隐藏中的单选按钮

String uniqueRadioButtonScript;
RadioButton radioButton;

uniqueRadioButtonScript = "javascript:SetUniqueRadioButton(this);";

if (e.Row.RowType == DataControlRowType.DataRow)
{
    radioButton = (RadioButton)e.Row.FindControl("MyRadioButton");

    radioButton.Attributes.Add("onclick", uniqueRadioButtonScript)
}

答案 1 :(得分:0)

最好的选择是这样的: 1.添加脚本

 function fnrad(rbtn) {


            var radioList = document.getElementsByTagName("input");

            for (var i = 0 ; i < radioList.length; i++) {

                if (radioList[i].type == "radio") {

                    radioList[i].name = 'a';
                    radioList[i].setAttribute("Checked","");

                }
            }

            rbtn.setAttribute("Checked", "checked");
        }

Datalist将是这样的:

<asp:DataList ID="dlEmails" RepeatLayout="Flow" runat="server">
        <HeaderTemplate>
            <table>
                <tr>
                    <th>Select Email Address </th>

                    <th>Status</th>

                </tr>
        </HeaderTemplate>
        <ItemTemplate>

            <tr>
                <td>

                    <asp:RadioButton ID="rbtnSelect" Text='<%#Eval("Emails") %>' onclick='fnrad(this);' GroupName="a" Checked='<%#Eval("Primary") %>' runat="server" /><br />
                    (<asp:Label ID="lblId" runat="server" Text='<%#Eval("Verified") %>'> </asp:Label>)
                </td>

                <td valign="middle">
                    <asp:Label ID="Label2" Style="display: none;" runat="server" Text='<%#Eval("Id") %>'> </asp:Label>
                    <asp:Label ID="Label1" runat="server" Text='<%#Eval("Main") %>'> </asp:Label>

                </td>

            </tr>


        </ItemTemplate>
        <FooterTemplate>
            </table>

        </FooterTemplate>
    </asp:DataList>