Repeater中的HtmlInputCheckBox始终未选中

本文关键字:中的 HtmlInputCheckBox Repeater | 更新日期: 2023-09-27 18:26:58

我通过添加在中继器中使用HtmlInputCheckBox

<input id="CheckBox1" type="checkbox" runat="server" value='<%# Eval ("userid") %>' />

到中继器->ItemTemplate->table->tr->td,在服务器端我使用

protected void Button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < UserRepeater.Items.Count; i++)
        {
            var chkBox = UserRepeater.Items[i].FindControl("CheckBox1") as HtmlInputCheckBox;
            if (chkBox != null && chkBox.Checked)
            {
                //
            }
        }
    }

我没有用程序设置任何复选框,而是在测试期间在网页上检查它们。我的var复选框总是被选中{Value="1,2,3,4"Checked=false},thx帮助了我。

Repeater中的HtmlInputCheckBox始终未选中

如何填充中继器-如果您在page_load中进行填充,请确保其受到回发保护:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        // populate your data
    }
}

编辑
这是假设您正在上使用viewstate,默认情况下是这样的。

这可能与绑定中继器有关。如果您在Page_Load上绑定,则会在视图状态和发布变量恢复后创建复选框,因此该值不会出现在复选框中。

如果可能,将数据绑定移动到Page_Init;在恢复viewstate/post值之前,您的复选框将获得正确的值。如果你不能绑定Page_Init,那么@Aristos的答案就可以了。