0

我通过添加在转发器中使用 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},谢谢帮助我。

4

2 回答 2

1

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

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

编辑
这是假设您正在使用视图状态 - 默认情况下是这种情况。

于 2012-03-05T11:19:56.403 回答
0

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

如果可能,将数据绑定移动到 Page_Init;因为这发生在视图状态/帖子值恢复之前,您的复选框将获得正确的分配值。如果您无法在 Page_Init 上绑定,那么@Aristos 的答案就可以了。

于 2012-03-05T11:12:09.683 回答