动态添加的几个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事件中重新加载。
------解决方案--------------------------------------------------------