1
<%@ Page Debug="true" language="c#" Codebehind="Top.aspx.cs" Inherits="QA.Top" %>
2
3
<HTML>
4
<HEAD>
5
<title>Top</title>
6
<meta name="CODE_LANGUAGE" Content="C#">
7
</HEAD>
8
<body>
9
<form id="Form1" method="post" runat="server">
10
<asp:repeater ID="Class" runat="server" OnItemCreated="Class_ItemCreated">
11
<itemtemplate> <br><b><%# DataBinder.Eval(Container.DataItem, "ClassName") %>:</b>
12
<asp:repeater ID="Forum" runat="server">
13
<itemtemplate><%# DataBinder.Eval(Container.DataItem, "ClassName") %>
14
</itemtemplate>
15
</asp:repeater>
16
</itemtemplate>
17
</asp:repeater>
18
</form>
19
</body>
20
</HTML>
21

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

Top.aspx.cs
1
using System;
2
using System.Configuration;
3
using System.Data;
4
using System.Data.OleDb;
5
using System.Text;
6
using System.Web;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.HtmlControls;
10
11
namespace QA
12

{
13
/**//// <summary>
14
/// Top 的摘要说明。
15
/// </summary>
16
public class Top : System.Web.UI.Page
17
{
18
/**//// <summary>
19
/// 数据库连接
20
/// </summary>
21
22
public static string strConn
23
{
24
get
25
{
26
StringBuilder strResult = new StringBuilder(ConfigurationSettings.AppSettings["Provider"]);
27
strResult.Append("; ");
28
strResult.Append("Data Source = ");
29
strResult.Append(HttpContext.Current.Server.MapPath("."));
30
strResult.Append("\\");
31
strResult.Append(ConfigurationSettings.AppSettings["DataSource"]);
32
return strResult.ToString();
33
}
34
}
35
protected string strSQL;
36
protected OleDbDataAdapter Adpt = new OleDbDataAdapter();
37
protected DataSet Ds = new DataSet();
38
protected OleDbConnection Conn = new OleDbConnection(strConn);
39
protected Repeater Class = new Repeater();
40
protected OleDbCommand Cmd = new OleDbCommand();
41
42
private void Page_Load(object sender, System.EventArgs e)
43
{
44
if(!Page.IsPostBack)
45
{
46
strSQL = "SELECT * FROM Qclass WHERE Dclass = 0";
47
Adpt = new OleDbDataAdapter(strSQL, Conn);
48
Adpt.Fill(Ds, "Class");
49
Class.DataSource = Ds.Tables["Class"].DefaultView;
50
Class.DataBind();
51
}
52
53
}
54
protected DataTable Forum_Source(int id)
55
{
56
if (Ds.Tables.Contains("Forum") && Ds.Tables.CanRemove(Ds.Tables["Forum"]))
57
Ds.Tables.Remove("Forum");
58
strSQL = "SELECT * FROM Qclass WHERE Dclass = @id";
59
Cmd = new OleDbCommand(strSQL, Conn);
60
Cmd.Parameters.Add(new OleDbParameter("@id", OleDbType.Integer)).Value = id;
61
Adpt = new OleDbDataAdapter(Cmd);
62
Adpt.Fill(Ds, "Forum");
63
return Ds.Tables["Forum"];
64
}
65
//控件调用的OnItemCreated类
66
protected void Class_ItemCreated(object sender, RepeaterItemEventArgs e)
67
{
68
((Repeater)e.Item.FindControl("Forum")).DataSource = Forum_Source(int.Parse(((System.Data.DataRowView)e.Item.DataItem)["id"].ToString())).DefaultView;
69
}
70
71
}
72
}
73

2

3

4

5

6

7

8

9

10

11

12



13


14

15

16

17



18


19

20

21

22

23



24

25



26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43



44

45



46

47

48

49

50

51

52

53

54

55



56

57

58

59

60

61

62

63

64

65

66

67



68

69

70

71

72

73

数据库表如下:
当Dclass为0时,此分类为主分类,当Dclass不为0时为小分类,并与主分类ID对应!