表:ProductsType
PT_ID  PT_Name PT_ParentID
1      服饰     0
2      数码     0
3      书籍     0
4      男装     1
5      女装     1
6      童装     1
7      mp3     2
8      相机     2
9      笔记本   2
10     历史类   3
11     艺术类   3
12     科技类   4我想实现的数据查询是:
 服饰 
 男装  女装  童装  
 
 数码    
 mp3   相机  笔记本  
 
 书籍    
 历史类 艺术类  科技类 
 要用repeater控件在页面上显示出来                
                          
                       

解决方案 »

  1.   

    可以用Repeater 进行嵌套,
    外层用select * from ProductsType where PT_ParentID ='0'构造 DataSet
    获得你的为0的id,将这个id 做为构造里层的Repeater的 select * from ProductsType  where PT_ParentID ='获得的编号'
      

  2.   

    先是aspx页面
    <asp:Repeater ID="rp" runat="server">
    <ItemTemplate>
    <%# Eval("id") %> 
    <asp:Repeater ID="rp1" runat="server" DataSource='<%# GetData(Eval("id")) %>'>
    <ItemTemplate>
    <%# Eval("name") %><br />
    </ItemTemplate>
    </asp:Repeater>
    <br />
    </ItemTemplate>
    </asp:Repeater>
    其中关键是<asp:Repeater ID="rp1" runat="server" DataSource='<%# GetData(Eval("id")) %>'>
    GetData是一个自义函数,原型如下:
    protected DataTable GetData(object obj)
    {
    DataTable dt = new DataTable();
    //这里做一些事情
    return dt;
    }
    完整的代码如下:aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
    <%@ Import Namespace="System.Data" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>nid's blog http://www.ljnid.cn</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:Repeater ID="rp" runat="server">
    <ItemTemplate>
    <%# Eval("id") %> 
    <asp:Repeater ID="rp1" runat="server" DataSource='<%# GetData(Eval("id")) %>'>
    <ItemTemplate>
    <%# Eval("name") %><br />
    </ItemTemplate>
    </asp:Repeater>
    <br />
    </ItemTemplate>
    </asp:Repeater>
    </div>
    </form>
    </body>
    </html>
    aspx.cs文件
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class test : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("id");
    for (int i = 0; i < 4; i++)
    {
    DataRow dr = dt.NewRow();
    dr["id"] = i;
    dt.Rows.Add(dr);
    }rp.DataSource = dt;
    rp.DataBind();
    }
    protected DataTable GetData(object obj)
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("name");
    for (int i = 0; i < 10; i++)
    {
    DataRow dr = dt.NewRow();
    dr["name"] = "name_" + obj + "_" + i;
    dt.Rows.Add(dr);
    }
    return dt;
    }