我有一个包含数据列表的表单,该数据列表绑定到一个数据源,该数据源包含一个项列表和一个真/假标志。如果为true,则选中myCheck复选框:
<form id="myForm" runat="server">
<asp:Button ID="save" runat="server" Text="Save" OnClick="save_Click" />
<br />
<asp:DataList runat="server" id="myList" onitemdatabound="myList_ItemDataBound">
<HeaderTemplate>
<th>Item Name</th>
<th id="thCheck" runat="server">Check?</th>
</HeaderTemplate>
<ItemTemplate>
<td id="tdName" runat="server"><%# Eval("Name") %></td>
<td runat="server"><asp:CheckBox id="myCheck" runat="server" Checked="false" /></td>
</ItemTemplate>
</asp:DataList>
点击“保存”后,我想查看已检查的项目。我正在使用以下内容来遍历datalist中的项目:
protected void save_Click(Object sender, EventArgs e)
{
String Name;
Boolean omit;
foreach (DataListItem item in myList.Items)
{
CheckBox omitCheck = (CheckBox)item.FindControl("myCheck");
if (omitCheck != null)
{
if (omitCheck.Checked == true) // This line is my problem!!
{
// do stuff
}
break;
}
}
FindControl
似乎工作正常并返回一个复选框,但是值始终为false,即使我已经检查了一些框。如果我在aspx页面中将复选框的值设置为True,则omitCheck.Checked
始终为true。 ViewState
未被禁用。
我是新手,所以肯定有一个明显的答案。
答案 0 :(得分:5)
myList_ItemDataBound函数是什么样的?我怀疑它需要一个!IsPostback不会覆盖回发中输入的值