为什么我的ASP.NET复选框始终为false?

时间:2012-03-09 16:43:46

标签: asp.net .net-4.0 webforms

我正在开发一个ASP.NET Web表单应用程序。我有一个四列listview,绑定到pageload()上的数据源,填充了联系人姓名。其中一列包含一个复选框。用户选择一个复选框以指示应在下一步中处理相应的联系人。

表单还包含一个按钮。单击此按钮时,将运行以下代码以处理选定的联系人。

foreach (var x in lvPeople.Items)
{
    chkSelected = (CheckBox)x.FindControl("IsLetterRecipient");

    if (chkSelected.Checked)
    {
       // the person was selected by the user, do stuff here...
    }
}

当我在包含IF语句的行上设置断点时,断点会被命中七次(listview中每行一次==七个复选框)。但是,IF块内的代码永远不会运行,因为.Checked始终为False,无论是否实际检查了复选框。

复选框上的AutoPostBack设置为False。复选框和列表视图上的EnableViewState设置为True。

我做错了什么?如何获得复选框的.Checked状态?

1 个答案:

答案 0 :(得分:4)

当您在Page_Load上绑定数据时,您可能忘了这样做:

if(!IsPostBack)
{
    //bind the data to the list
}