nested repeate 嵌套方案一

asp.net2.0中使用不使用 relation而使用DataView.RowFilter进行主从表显示
1
    <%@ Page Language="C#" %>
2    <%@ Import Namespace="System.Data" %>
3    <%@ Import Namespace="System.Data.SqlClient" %>
4    
5    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6    
7    <script runat="server">
8    
9        private DataSet _ds;
10       
11       protected override void OnLoad(EventArgs e)
12       {
13           base.OnLoad(e);
14   
15           RetrieveInformation();
16           BindOuterRepeater();
17       }
18   
19       private void RetrieveInformation()
20       {
21           using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString))
22           {
23               using (SqlCommand cmd = new SqlCommand("select * from categories", conn))
24               {
25                   conn.Open();
26                   SqlDataAdapter da = new SqlDataAdapter(cmd);
27                   _ds = new DataSet();
28                   da.Fill(_ds, "OuterTable");
29   
30                   cmd.CommandText = "select * from products";
31                   da.Fill(_ds, "InnerTable");
32               }
33           }
34       }
35   
36       private void BindOuterRepeater()
37       {
38           RepeaterOuter.DataSource = _ds.Tables["OuterTable"];
39           RepeaterOuter.DataBind();
40       }
41   
42       public DataView BindInnerRepeater(string id)
43       { 
44           DataView dv = new DataView(_ds.Tables["InnerTable"]);
45   
46           dv.RowFilter = "CategoryID = " + id;
47   
48           return dv;
49       }
50       
51   </script>
52   
53   <html xmlns="http://www.w3.org/1999/xhtml">
54   <head runat="server">
55       <title>Untitled Page</title>
56       <style type="text/css">
57       .outer { margin-left:20px; color:#c00; }
58       .inner { margin-left:40px; color:#000; }
59       </style>
60   </head>
61   <body>
62       <form id="form1" runat="server">
63           <div>
64               <asp:Repeater runat="server" ID="RepeaterOuter">
65                   <ItemTemplate>
66                       <span class="outer"><%# DataBinder.Eval(Container.DataItem, "CategoryName"%></span><br />
67                       <asp:Repeater runat="server" ID="RepeaterInner" DataSource='<%# BindInnerRepeater(DataBinder.Eval(Container.DataItem, "CategoryID").ToString()) %>'>
68                           <ItemTemplate>
69                               <span class="inner"><%# DataBinder.Eval(Container.DataItem, "ProductName"%></span><br />
70                           </ItemTemplate>
71                       </asp:Repeater>
72                   </ItemTemplate>
73               </asp:Repeater>
74           </div>
75       </form>
76   </body>
77   </html>


                    
                
posted on 2006-06-07 10:50  清清流水  阅读(170)  评论(0)    收藏  举报