3

我有一个带有单选按钮的中继器。

 <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 中的单选按钮错误。我在页面加载时将一个列表绑定到转发器,并在(!Page.IsPostback)其周围加上一个 if。 编辑:

 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。我正在用代码做更多的事情,但我已经简化了它,因为这是最大的问题。

我已经看到了无数关于这个问题的主题,并且我已经浏览了所有这些主题,但我似乎仍然无法让它发挥作用。

4

2 回答 2

1

我认为这完全取决于 ASP.NET 中的事件序列

尝试将DataBind代码放入Page_Init过程中,这样单选按钮的状态将在到达Page_Load过程时设置。

于 2012-07-14T10:35:11.093 回答
1

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

于 2012-07-14T10:27:12.050 回答