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

Ric*_*rdB 1 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>
Run Code Online (Sandbox Code Playgroud)

单击"保存"时,我想查看已检查的项目.我使用以下内容迭代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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

FindControl似乎工作正常并返回一个复选框,但是值始终为false,即使我已经检查了一些框.如果我在aspx页面中将复选框的值设置为True,omitCheck.Checked则始终为true.ViewState未禁用.

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

Eve*_*ert 5

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