是这样的,我写的是一个权限分配的功能,先说下个表的关系,SysFun表:NodeId主键标识,Name功能名称,ParentNodeId父级Id;RoleInfo表:RoleId角色Id标识,其他字段忽略;RoleRight表:RoleRightId主键标识,RoleId外键,NodeId外键页面显示我是用Repeater做的,里面是一个CheckBox表示父级,一个CheckBoxList表示若干子级;显示都已经实现,给每个用户分配权限的时候,我想进来就把该用户目前拥有的权限全部勾上,我的代码如下:问题是我每次用调试的方式页面都能显示,结果也是正确的,而直接运行就报错,而且每次报错的地方都不一样,我实在很纳闷,报错位置是有时在第一个for循环,有时在第三个for循环,分别是两个List<int>为空,而我调试的都不是为空,请有经验的前辈给于指教,在此感谢! protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
 {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            CheckBox chkParent = e.Item.FindControl("chkParent") as CheckBox;
            chkParent.Attributes.Add("onclick", "check(this)");//添加JavaScript
            int parentNodeId = int.Parse(chkParent.CssClass);//得到该父级的NodeId            List<int> list = RoleRightService.GetRoleRightParent();//得到父级NodeId的集合
            for (int i = 0; i < list.Count; i++)//如果父级Id在list中则选中
            {
                if (parentNodeId == list[i])
                    chkParent.Checked = true;
            }
            //绑定CheckBoxList
            CheckBoxList chkChird = e.Item.FindControl("chkChird") as CheckBoxList;
            chkChird.DataTextField = "DisplayName";
            chkChird.DataValueField = "NodeId";
            
            chkChird.DataSourceID = null;
            chkChird.DataSource = Class2.GetAllChird(parentNodeId);
            chkChird.DataBind();            List<int> chird = RoleRightService.CheckChird();//得到所有子级的NodeId
            foreach (ListItem li in chkChird.Items)
            {
                li.Attributes.Add("onclick", "checkParent(this)");//Javascript
                
                int value = int.Parse(li.Value);
                for (int index = 0; index < chird.Count; index++)
                {
                    if (value == chird[index])
                    {
                        li.Selected = true;
                    }
                }
            }
        }
    }