Получение неправильных значений из динамически созданного флажка - PullRequest
4 голосов
/ 15 января 2012

Я пытаюсь прочитать из динамически созданного флажка при нажатии кнопки.Проблема заключается в том, что после того, как флажок установлен, дальнейшая операция снятия флажка не читается должным образом при щелчке при отправке.

РЕДАКТИРОВАТЬ: флажок изначально создается при выборе списка радиокнопок путем вызова SetSelection, как показано.

Фрагмент кода показан ниже. Есть идеи, в чем может быть проблема?

protected void Page_Load(object sender, EventArgs e)
{    
    if (this.IsPostBack)
    {
    ..
        GenerateDynamicUI();
    }
    ...
}     


private void GenerateDynamicUI(int selectedItem)
{
    ...
    TableCell cellCheckBox = new TableCell();
    CheckBox chkBox = new CheckBox();              
    chkBox.Text = "Consider all";
    chkBox.ID = "chkAll";
    cellCheckBox.Controls.Add(chkBox);

    TableRow chkRow = new TableRow();
    chkRow.Cells.Add(cellCheckBox);
    table.Rows.Add(chkRow);
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
    ...
    bool isChecked = ((CheckBox)table.FindControl("chkAll")).Checked;   

}

private void SetSelection()
{
    int selectedItem = int.Parse(radiobuttonList.SelectedItem.Value);           
    GenerateDynamicUI(selectedItem);
    pnlDynamic.Visible = true;            
}

protected void radiobuttonList_SelectedIndexChanged(object sender, EventArgs e)
{
     SetSelection();
}       

Ответы [ 2 ]

4 голосов
/ 15 января 2012

Я воссоздал твой пример, и он отлично работает.Я могу только предположить, что в вашем коде есть что-то еще, ответственное за непредвиденное поведение.

Попробуйте использовать событие Page_PreInit вместо Page_Load для воссоздания / управления вашими динамическими элементами управления:

protected void Page_PreInit(object sender, EventArgs e)
{
    // create controls here
    GenerateDynamicUI();
}

Дополнительная информация: http://msdn.microsoft.com/en-us/library/ms178472.aspx

Под словом "не готов должным образом" я предполагаю, что вы имеете в виду, что он остается True и никогда не возвращает False после первой проверки?

2 голосов
/ 15 января 2012

похоже, что вы объявили

bool isChecked = ((CheckBox)table.FindControl("chkAll")).Checked;

в btnSubmit, если это так, он будет сбрасываться в false при каждом вызове метода.попробуйте объявить об этом.IE:

bool isChecked;
protected void btnSubmit_Click(object sender, EventArgs e)
{
    ...
    isChecked = ((CheckBox)table.FindControl("chkAll")).Checked;   

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...