我正在开发一个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状态?
答案 0 :(得分:4)
当您在Page_Load上绑定数据时,您可能忘了这样做:
if(!IsPostBack)
{
//bind the data to the list
}