选择所有复选框,显示为已选中,但未选中

时间:2013-08-30 14:19:15

标签: asp.net .net checkbox

我遇到了一个奇怪的问题,我已经选中了全部选中复选框,标记为选中了很多复选框。

这是CheckedChanged事件

protected void chkSelecionaTodasOcorrencias_CheckedChanged(object sender, EventArgs e)
    {
        if (chk_selecionaTodasOcorrencias.Checked)
        {
            foreach (ListItem c in chkBox_TiposOcorrencia.Items)
            {
                c.Selected = true;
            }
        }
        else
        {
            foreach (ListItem c in chkBox_TiposOcorrencia.Items)
            {
                c.Selected = false;
            }
        }
        chkBox_TiposOcorrencia.DataBind();
    }

它会检查所有复选框,或取消选中所有复选框。

然后我有另一种方法将所有复选框插入列表中。

private List<int> insertItensInListIntegers(ListItemCollection itens)
    {
        int value = 0;
        List<int> queryItens = new List<int>();

        foreach (ListItem c in itens)
        {
            if (c.Selected) //<-- Here i'm getting false
            {
                tiposOcorrencias.TryGetValue(c.Text, out value);
                queryItens.Add(value);
            }
        }
        return queryItens;

    }

参数中提供的值为:chkBox_TiposOcorrencia.Items

在屏幕上显示所有复选框,但是当我尝试调试时,c.Selected值为false

提前致谢。

1 个答案:

答案 0 :(得分:0)

就像Freak_Droid在他的评论中描述的那样,如果你在pageload上加载你的复选框,只需将你的代码加载到if语句中,然后检查!ispostback。例如 -

protected void Page_Load(object sender, EventArgs e)
{

     if (!IsPostBack)
        {
         //here is where you would put any of your code for databinding your checkboxes


        }
}