始终不检查Repeater中的HtmlInputCheckBox

时间:2012-03-05 10:30:28

标签: c# asp.net unchecked html-input

我通过添加

在转发器中使用HtmlInputCheckBox
<input id="CheckBox1" type="checkbox" runat="server" value='<%# Eval ("userid") %>' />

到repeater-&gt; ItemTemplate-&gt; table-&gt; tr-&gt; 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 =&#34; 1,2,3,4&#34;检查=假},这是帮助我的。

2 个答案:

答案 0 :(得分:1)

如何填充转发器 - 如果您在page_load中执行此操作,请确保它受到回发保护:

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

修改
这假设您正在使用viewstate - 默认情况下就是这种情况。

答案 1 :(得分:0)

这可能与绑定转发器时有关。如果您对Page_Load绑定,则在恢复viewstate和post变量后将创建复选框,因此该值不会出现在您的复选框上。

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