表结构
父亲          NUMBER(2),
子   NUMBER(2)显示成这样
父亲1
子1 子2、子3
父亲2
子1、子2附:create table OPCKB_WK_CATEGORY
(
  CATEGORYNAME VARCHAR2(50),
  DISPLAYORDER NUMBER(2),
  DOCS         NUMBER(5),
  IMAGE        VARCHAR2(255),
  NAVIGATION   VARCHAR2(255),
  DP           VARCHAR2(255),
  PID          NUMBER(2),
  CATEGORYID   NUMBER(2)
)
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('开发方案', null, null, null, null, null, 1, 5);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('成果类型及共享方式', null, null, null, null, null, 1, 27);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('实用工具', null, null, null, null, null, 1, 26);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('油气层保护', null, null, null, null, null, 2, 28);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('机械采油', null, null, null, null, null, 2, 29);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('水平井采油', null, null, null, null, null, 2, 30);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('三次采油', null, null, null, null, null, 2, 31);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('分层注水', null, null, null, null, null, 2, 32);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('套损井修复', null, null, null, null, null, 2, 33);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('油气集输', null, null, null, null, null, 3, 34);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('油田三水', null, null, null, null, null, 3, 35);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('供配电', null, null, null, null, null, 3, 36);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('道路建设', null, null, null, null, null, 3, 37);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('给排水', null, null, null, null, null, 3, 38);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('自控仪表', null, null, null, null, null, 3, 39);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('防腐检测', null, null, null, null, null, 3, 40);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('事故预案', null, null, null, null, null, 3, 41);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('油田场站', null, null, null, null, null, 3, 42);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('油藏工程', null, null, null, null, null, 0, 1);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('采油工程', null, null, null, null, null, 0, 2);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('地面工程', null, null, null, null, null, 0, 3);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('信息产业', null, null, null, null, null, 0, 4);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('储层描述', null, null, null, null, null, 1, 6);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('动态分析', null, null, null, null, null, 1, 7);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('数据管理', null, null, null, null, null, 4, 8);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('网络管理', null, null, null, null, null, 4, 9);
insert into OPCKB_WK_CATEGORY (CATEGORYNAME, DISPLAYORDER, DOCS, IMAGE, NAVIGATION, DP, PID, CATEGORYID)
values ('软件开发', null, null, null, null, null, 4, 10);
commit;

解决方案 »

  1.   

    select t.CATEGORYID,t.pid
    from OPCKB_WK_CATEGORY t 
    start with t.pid=0
    connect by prior CATEGORYID= pid; 这样只能查一级出来,关键是不知道怎么在这个结果的基础上显示下一层。
    油藏工程
    储层描述 动态分析。。
    采油工程
    水平井采油 机械采油 。。
      

  2.   

    用Repeater嵌套实现很方便,下面手动给你敲了主要的代码,大致思路就是这样的<asp:Repeater ID="rpt" runat="server" onitemdatabound="rpt_ItemDataBound">
            <HeaderTemplate>
                        <table>
            </HeaderTemplate>
            <ItemTemplate>
                           <tr>
                                   <td><%#Eval("PID")%></td>
                           </tr>
                           <tr>
                                    <td>
                                             <asp:Repeater ID="rpt2" runat="server">
                                                        <ItemTemplate>
                                                                  <%#Eval("CATEGORYID")%>
                                                        </ItemTemplate>
                                             </asp:Repeater>
                                    </td>
                          </tr>
           </ItemTemplate>
           <FooterTemplate>
                      </table>
          </FooterTemplate>
    </asp:Repeater>public void Page_Load(object sender,EventArgs e)
    {
          if(!IsPostBack)
          {
                 string strSQL = "select distinct(PID) as PID from 你的表名"; //绑定上面一层的父ID
                 this.rpt.DataSource = XXX(strSQL);
                 this.rpt.DataBind();
          }
    }protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                 DataRowView drv = (DataRowView)e.Item.DataItem;
                 Repeater repeater = (Repeater)e.Item.FindControl("rpt2");
                 string strSQL="select CATEGORYID from 你的表名 where PID="+drv["PID"].ToString();
                 DataSet ds = XXX(strSQL);
                 repeater.DataSource = ds;
                 repeater.DataBind();
             }
    }
      

  3.   

    非常感谢
    protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                 DataRowView drv = (DataRowView)e.Item.DataItem;
                 Repeater repeater = (Repeater)e.Item.FindControl("rpt2");
                 string strSQL="select CATEGORYID from 你的表名 where PID="+drv["PID"].ToString();
                 DataSet ds = XXX(strSQL);
                 repeater.DataSource = ds;             repeater.DataBind();
             }
    }
    可是错误 54 “opckb_net.test.Repeater”不包含“DataSource”的定义,并且找不到可接受类型为“opckb_net.test.Repeater”的第一个参数的扩展方法“DataSource”(是否缺少 using 指令或程序集引用?) G:\My Documents\Visual Studio 2008\Projects\opckb_net\opckb_net\test\Repeater.aspx.cs 42 26 opckb_net