转发器内的radiobutton始终返回false

时间:2012-07-14 10:00:52

标签: c# asp.net radio-button repeater

我有一个带有radiobuttons的中继器。

 <script type="text/javascript">
    $(document).ready(function () 
{
    $("#test input:radio").attr("name", "yourGroupName");
}); 
</script>
</head>
<body>
<form id="form1" runat="server">
<div>

<div id="test">
 <asp:Repeater runat="server" ID="rep" onitemdatabound="rep_ItemDataBound" 
        onitemcommand="rep_ItemCommand">
<ItemTemplate>   
<asp:RadioButton ID="n"  runat="server" Text='<%# Eval("name") %>'  AccessKey='<%# Eval("id")%>' />   
</ItemTemplate>    
</asp:Repeater>
</div>

我使用顶部的javascript来修复.net中的radiobutton错误。 我在页面加载时将列表绑定到转发器,并在其周围使用if (!Page.IsPostback)修改

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            rep.DataSource = z.Table.ToList();
            rep.DataBind();
        }
    }

然后我有一个按钮,单击时应该使用已选中的单选按钮执行某些操作,这就是现在的问题:

     foreach (RepeaterItem i in rep.Items)
        {
            RadioButton erb = i.FindControl("n") as RadioButton;
            if (erb.Checked)
            {
                //do stuff
            }
         }

无论我选择哪个单选按钮,当我单击按钮并调试整个循环时,每个复选框== false。我正在用代码做更多的东西,但我简化了它,因为这是最大的问题。

我已经看过无数关于这个问题的主题,我已经仔细研究过它们,但我似乎仍无法让它发挥作用。

2 个答案:

答案 0 :(得分:1)

请尝试在您的单选按钮上添加OnCheckedChanged="RadioButton1_OnCheckedChanged" AutoPostBack="true",这会在点击按钮时触发回发,您将能够找到已选中的

答案 1 :(得分:1)

我认为这完全取决于sequence of events in ASP.NET

尝试将DataBind代码放入Page_Init程序,这样,无线电代码按钮的状态将在到达Page_Load程序时设置。