注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 LCS2005客户端配置详解:L..
 帮助

研究了一晚上才搞出来用Repeater控件显示主从关系数据表


2005-06-11 06:49:00
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
TOP.ASPX 
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
Top.aspx.cs
1using System;
 2using System.Configuration;
 3using System.Data;
 4using System.Data.OleDb;
 5using System.Text;
 6using System.Web;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.HtmlControls;
10
11namespace 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
数据库表如下:

Dclass为0时,此分类为主分类,当Dclass不为0时为小分类,并与主分类ID对应!

本文出自 “共享经验” 博客,转载请与作者联系!





    文章评论
 
 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: