本帖最后由 x123jing 于 2011-11-13 16:58:05 编辑

解决方案 »

  1.   

    ProjectType为0时,表是为顶层分类。
    ProjectType不为0时,其数字表示为该数值=pid的下级分类。
    ProjectOrder为排序
      

  2.   

    有两个解决方案:
    1,一种是从数据库中获取时先用递归生成
    文章管理
        添加
        删除
    新闻管理
       添加
       删除
    然后绑定数据
    不过会得到你要的效果(效果如下)
    文章管理
        添加
        删除
    新闻管理
       添加
       删除
    第二中解决方案:
    repeater中件套repeater
    应该可以达到你要的效果。
    欢迎加入QQ群学习:63181865
      

  3.   


    你这种竖排我用存储过程搞出来了,输出时就直接是排好序的datatable,我搞不出来的就是如效果图中的“文章添加,文章删除...”这些字段横排!!!
      

  4.   

    一个是在绑定时处理
    Repeater_ItemDataBoun(object sender, RepeaterItemEventArgs e)
    {
    //各种判断以及嵌套处理
    }
    一个是前台页面的处理
    <%#(int)Eval("IsOK") == 1 ? "testok" : "hid"%><div>
         <%if(HasPower){%><a href="Add.aspx?id=<%=id%>">修改</a><% }%>
         <a href="List.aspx">返回</a>
    </div><%#gettype(Eval("type"))%>
      

  5.   

    Repeater 嵌套..google 一下.
      

  6.   


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html>
    <html>
    <head runat="server">
        <title></title>
        <style type="text/css">
                ul,li{ list-style-type:none; line-height:24px;}
                .ulrr{ float:left; width:150px;}
                .ulrr li{ float:left; margin-left:5px; width: 32px; }
                .tt{ width:150px; float:left; overflow:hidden;}
                dl { width: 100px; float: left; overflow: hidden; }
                dt { float: left; clear: both; }
                dd { float: left; }
            </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>        
            <ul class="tt">
            <asp:Repeater ID="Repeater1" runat="server" 
                    onitemdatabound="Repeater1_ItemDataBound">
            <ItemTemplate>
            <li><%#Eval("ProjectName")%>
                <asp:Literal ID="ltId" Text='<%#Eval("PId") %>' Visible="false" runat="server"></asp:Literal>
                <ul class="ulrr">
                    <asp:Repeater ID="Repeater2" runat="server">
                    <ItemTemplate>
                    <li><%#Eval("ProjectName")%></li>
                    </ItemTemplate>
                    </asp:Repeater>
                </ul>
            </li>
            </ItemTemplate>
            </asp:Repeater>        
            </ul>
            
        </div>
        </form>
    </body>
    </html>protected void Page_Load(object sender, EventArgs e)
        {
            
            Bind();
        }    private void Bind()
        {
            //第一次绑定ProjectType=0的数据
            DataTable dt = new DataTable();
            Repeater1.DataSource = dt;
            Repeater1.DataBind();
        }    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            Literal ltId = (Literal)e.Item.FindControl("ltId");//找到绑定ID的控件
            Repeater rep2 = (Repeater)e.Item.FindControl("Repeater2");//找到Repeater2
            //第二次绑定
            //获取ProjectType=ltId.Text 的数据
            DataTable dt = new DataTable();
            Repeater1.DataSource = dt;
            Repeater1.DataBind();
        }
      

  7.   


    按照weizengxun的多次查询的方法是可以实现这样的效果,但是随之而来的问题就是,<li>标签的多少因数据的多少不一而不同,导致添加背景色时,会出现长短不一的效果,不知道这个能否解决!!
      

  8.   

    最终还是用div+css,两个repeater实现。想用table,做不到!!嗳,结贴。