想要上面的左边菜单效果,点击大类可以显示隐藏小类,现在我把所有的数据都读取到Ilist中了
CategoryManage categoryManage = new CategoryManage();
        IList<CategoryInfo> List = categoryManage.GetList(0);
如果把List绑定到Repeater中,可以按正确的顺序显示出来,
现在就是不知道要怎么才能按图中格式来显示,麻烦大家给个思路,谢谢。

解决方案 »

  1.   

    我今天刚好下了飞梦的文章管理 这种情况需要两个Repeater嵌套 
    大的Repeater根据类别id形成的elementid来控制新生成的小类别列表的显示问题
      

  2.   

    比如福建新闻的id=10 则福建那行的td或者div的id可以定义为 big_10
    而厦门和福州在内的整个div或者table可以命名为small_10
    那么鼠标点击big_10 则可以随意控制small_10的显示与否了
      

  3.   


        string blank = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string body = ShowNodes(0, 0);
                lblBody.Text = body;
            }
        }
        private string ShowNodes(int pid, int level)
        {
            string body = "";
            DataTable dt = da.Query("select * from DropDownList where ParentId=" + pid.ToString());
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string space = "";
                for (int j = 0; j < level; j++)
                {
                    space += blank;
                }
                body += "<br>" + space + dt.Rows[i]["MyName"].ToString();
                body += "<a style='font-size:12px' href='#' " +
                    "onclick='showDialog(\""+dt.Rows[i]["MyId"].ToString()+"\",\""+
                    dt.Rows[i]["MyName"].ToString()+"\")'>添加子节点</a>";
                body += ShowNodes(Convert.ToInt32(dt.Rows[i]["MyId"].ToString()), level+1);
            }
            return body;
        }
    用递归,每增加一级就加几个空格不就行了!
    上面那个是拼凑字符串,实际应用的时候要用StringBuilder
      

  4.   

    点击隐藏这个就更简单了,绑定数据的时候给个ID,然后弄一个onclick事件,点击的时候隐藏那个div就行了!
      

  5.   

    顶5楼的、用sb在后台拼接吧、至于repeater的嵌套。因为目录级别未定、所以不好弄。
      

  6.   

    不定要什么repeater嵌套,看你的数据表的分类设计了,可建立一个排序字段,然后显示数据时,给二级三级...等非父级栏目添加相应的样式来缩进区分,这个可在itemdatabound事件中事项,也可以js赋值样式