【问题标题】:radiobutton inside repeater always returns false中继器内的单选按钮总是返回 false
【发布时间】:2012-07-14 00:46:35
【问题描述】:

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

 <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 中的单选按钮错误。 我在页面加载时将一个列表绑定到转发器,并在其周围加上 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。我正在用代码做更多的事情,但我已经简化了它,因为这是最大的问题。

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

【问题讨论】:

  • 你能告诉我们你在哪里绑定中继器吗?
  • @JaneDoe try one thing 在每次加载时绑定中继器,删除 ispostback 并检查它
  • 您是否有理由不使用 RadioButtonList 而不是中继器?这使得单选按钮 name 属性正确,并在回调时正确设置 Checked 属性。

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


【解决方案1】:

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

【讨论】:

  • 如果我把 autopostback = true 放在单选按钮上,页面只是回发,什么也不做
  • 那么你在 RadioButton1_OnCheckedChanged 方法中得到了什么,断点在它内部命中
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2021-08-24
    • 2015-10-01
    相关资源
    最近更新 更多