HtmlInputCheckBox в Repeater всегда не проверяется

я использую HtmlInputCheckBox в повторителе, добавляя

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

в Repeater->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}, спасибо за помощь в этом.


person Elyes Jlassi    schedule 05.03.2012    source источник
comment
Можете ли вы дать немного больше контекста, например, где находится ваш цикл for? может в обработчике button_click? вы программно не устанавливаете какие-либо флажки - так вы проверяете их на веб-странице во время теста? чего вы ожидаете?   -  person dice    schedule 05.03.2012


Ответы (2)


Как вы заполняете свой повторитель — если вы делаете это в page_load, убедитесь, что он защищен от обратных передач:

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

EDIT
Предполагается, что вы работаете с включенным состоянием просмотра, что по умолчанию.

person dice    schedule 05.03.2012

Это может быть связано с тем, когда вы привязываете свой ретранслятор. Если вы выполняете привязку к Page_Load, флажки будут созданы после восстановления состояния просмотра и пост-переменных, поэтому значение не будет отображаться в ваших флажках.

Если возможно, переместите привязку данных в Page_Init; поскольку это происходит до того, как значения состояния просмотра/сообщения будут восстановлены, вашим флажкам будут назначены правильные значения. Если вы не можете выполнить привязку к Page_Init, подойдет ответ @Aristos.

person Carl Sharman    schedule 05.03.2012
comment
спасибо, @varangian_12, я исправил это, привязав повторитель в if (!IsPostBack){} в Page_Load. - person Elyes Jlassi; 05.03.2012