C#Checkbox.Checked属性不反映检查更改

时间:2012-01-09 13:53:06

标签: c# asp.net

我有一个包含数据列表的表单,该数据列表绑定到一个数据源,该数据源包含一个项列表和一个真/假标志。如果为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未被禁用。

我是新手,所以肯定有一个明显的答案。

1 个答案:

答案 0 :(得分:5)

myList_ItemDataBound函数是什么样的?我怀疑它需要一个!IsPostback不会覆盖回发中输入的值