【问题标题】:Select all Checkboxes, appears selected, but are not选中所有复选框,显示为选中,但未选中
【发布时间】:2013-08-30 23:26:31
【问题描述】:

我有一个奇怪的问题,我做了一个全选复选框,标记为选中了很多复选框。

这是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

提前致谢。

【问题讨论】:

  • 如果您在页面加载中填写下拉菜单,请注意您使用的是!IsPostBack
  • 我认为这正是我的问题...我再次调试并发现 Itens 为 true,之后为 false,但我能做些什么来解决这个问题?

标签: asp.net .net checkbox


【解决方案1】:

就像 Freak_Droid 在他的评论中描述的那样,如果您在页面加载时加载复选框,只需将加载复选框的代码放在 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


        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2012-09-11
    相关资源
    最近更新 更多