C#复选框.选中的属性不反映检查更改

本文关键字:检查 属性 复选框 | 更新日期: 2023-09-27 18:19:45

我有一个包含数据列表的表单,该数据列表绑定到包含项目列表和true/false标志的数据源。如果为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>

单击"保存"后,我想查看哪些项目已被选中。我正在使用以下内容迭代数据列表中的项目:

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

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

C#复选框.选中的属性不反映检查更改

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