数据列表中单选按钮的问题

时间:2014-11-13 06:07:35

标签: c# jquery asp.net datalist

伙计们在提出这个问题之前我做了很多关于这个主题的研究,但是我无法检测到问题。我在datalist中有单选按钮,我正在尝试获取所选的单选按钮值。但是它显示了对于提交按钮上的所有单选按钮,我都是假的。我的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="lablel" runat="server" Text='<%#Eval("Verified") %>'> </asp:Label>)
                </td>

                <td valign="middle">
                    <asp:Label ID="lblID" 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>

允许一次只选择单个单选按钮的Javascript如下:

   <script>
    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].checked = false;

            }
        }

        rbtn.checked = true;
        rbtn.setAttribute("Checked","checked");

    }


</script>

我背后的代码是这样的:

public partial class Member_EmailList : System.Web.UI.Page
{
    EmailsBAL _mbl = new EmailsBAL(SessionContext.SystemUser);
    DataSet _ds = new DataSet();
    URLMessage URLMessage = new URLMessage();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            LoadData();
        }
    }

    private void LoadData()
    {
        _mbl.LoadByUser(_ds, 1);//SessionContext.SystemUser;
        dlEmails.DataSource = _ds.Tables[_mbl.SqlEntityX];
        dlEmails.DataBind();
    }
    protected void lnkConfirm_Click(object sender, EventArgs e)
    {
        RadioButton rb;
        Label lbl;
        int id = 0;
        foreach (DataListItem di in dlEmails.Items)
        {
            rb = (RadioButton)di.FindControl("rbtnSelect");


                if (rb.Checked == true)
                {
                    lbl = (Label)di.FindControl("lblID");
                    id = WebHelper.Cast(lbl.Text, 0);

                }


        }

        //Response.Redirect("~/Member/ConfirmEmail.aspx?" + URLMessage.Encrypt("SystemUser=" + SessionContext.SystemUser + "Id=" + id.ToString()));    

    }}

1 个答案:

答案 0 :(得分:0)

我尝试了你的javascript功能并体验了你的问题

我想建议在你的javascript函数上使用Jquery。我重构了你的jav功能。

function fnrad(rbtn) {

    $('input').removeAttr('checked');

    $(rbtn).prop('checked', true);

}

这完全符合我的要求。如果您仍然遇到这个问题,请告诉我。