请问父子表的横向显示该如何实现

honeyrose 2012-10-08 04:41:55
表结构
父亲 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;



...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
honeyrose 2012-10-09
  • 打赏
  • 举报
回复
可以了,名字弄重了
honeyrose 2012-10-09
  • 打赏
  • 举报
回复
非常感谢
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
暖枫无敌 2012-10-08
  • 打赏
  • 举报
回复
用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();
}
}
honeyrose 2012-10-08
  • 打赏
  • 举报
回复
select t.CATEGORYID,t.pid
from OPCKB_WK_CATEGORY t
start with t.pid=0
connect by prior CATEGORYID= pid; 这样只能查一级出来,关键是不知道怎么在这个结果的基础上显示下一层。
油藏工程
储层描述 动态分析。。
采油工程
水平井采油 机械采油 。。


111,045

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧