日期:2014-05-18  浏览次数:20413 次

动态绑定checkbox在panel控件中,却遍历不出来?
动态添加的几个CheckBox控件也在页面上显示出来了,调试时,panel控件中Controls的数量还是3,可就是点击保存时,在事件里遍历却发现count变为1了?
C# code

    protected void btn_Search_Click(object sender, EventArgs e)//查询按钮事件
    { 
       List<Staff> list = new StaffManager().GetStaffDCN(staff);//查询用户
        foreach (Staff sta in list)
        { 
            CheckBox cb = new CheckBox();//创建CheckBox控件
            cb.ID = sta.StfCode;//将员工编号设为ID
            cb.Text = sta.StfName;
            this.pnl_ToUser.Controls.Add(cb);            //将控件添加入Panel中,在这里断点调试Count数为3 !
        } 
    }
    protected void btn_Save_Click(object sender, EventArgs e)//保存按钮事件
    {
        List<MessageToUser> list = new List<MessageToUser>();
        foreach (Control con in this.pnl_ToUser.Controls)       //断点调试时这里Count却为1?
            {
                if (con is CheckBox)
                {  CheckBox cb = con as CheckBox;
                    if (cb.Checked)
                    {
                        MessageToUser messageToUser = new MessageToUser();
                        messageToUser.ToUserId = new Staff { StfCode=cb.ID };
                        list.Add(messageToUser);
                    }
                 } 
             }
     }



------解决方案--------------------
又是这种问题。2个解决方法:一种不要动态添加,而是事先添加好隐藏,用时再逐个显示;另一种用ViewState或Session保存被添加的容器,在Page_Load事件中重新加载。
------解决方案--------------------
探讨

你指定下一每个CheckBox的panel上的位置