是这样的,我在页面中用到了。加载这个方法,是当用户点击一页面按钮后动态给panel1加载控件。
Code
private void loadmenu(int programid)
{
bll = new Customer.BLL.ActionBLL();
DataSet dstopmenus = bll.GetTopMenu();
DataSet dssecond = bll.GetSecondMenusByProgram(programid);
DataSet dsuser = bll.GetSecondmenubyuserAndprogram(userid, programid);
int i = 0;
CheckBoxList ck = new CheckBoxList();
ck.Items.Add(new ListItem("ddddddddsdfsf", "sdfsfddddddddddd"));
Panel1.Controls.Add(ck);
foreach (DataRow drtop in dstopmenus.Tables[0].Rows)
{
Table table = new Table();
CheckBoxList ckl = new CheckBoxList();
ckl.ID = (i++).ToString();
ckl.EnableViewState = true;
DataRow[] drs = dssecond.Tables[0].Select("ParentID=" + drtop["ActionID"].ToString());
CheckBoxList list=new CheckBoxList();
foreach (DataRow dr in drs)
{
ListItem li = new ListItem(dr["MenuName"].ToString(), dr["ActionID"].ToString());
DataRow[] temp = dsuser.Tables[0].Select("ActionID=" + dr["ActionID"].ToString());
if (temp.Length != 0)
li.Selected = true;
ckl.Items.Add(li);
}
Panel1.Controls.Add(ckl);
}
}
在另一个按钮方法里。想遍历所有的checkboxlist把值取出来可发现panel1根本就不包括checkboxlist.
Code
foreach (Control control in Panel1.Controls)
后来我在page_load里,编程给panel1 添加控件,就能遍历出来。
估计是和页面触发顺序有关。可是还是找不到具体原因。高手指点。