DataList嵌套的重点是要在外层DataList的ItemDataBound事件中用e.Item.FindControl方法来找到嵌套层DataList的id,编写嵌套层DataList的绑定数据源事件,具体代码如下:
'--------前台代码DLNested.aspx:
1@ Page language="c#" Codebehind="DLNested.aspx.cs" AutoEventWireup="false" Inherits="Example.DateListNested"
1<html>
2<head>
3<title>DateListNested</title>
4<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"/>
5<meta content="C#" name="CODE_LANGUAGE"/>
6<meta content="JavaScript" name="vs_defaultClientScript"/>
7<meta content=" http://schemas.microsoft.com/intellisense/ie5 " name="vs_targetSchema"/>
8<style type="text/css">TD { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: "宋体" }
9</style>
10</head>
11<body ms_positioning="GridLayout">
12<form id="Form1" method="post" runat="server">
13<table border="1" bordercolordark="white" cellpadding="1" cellspacing="1" id="Table1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" width="100%">
14<tr>
15<td><a href="Default.aspx">DataList分页、编辑实例</a></td>
16</tr>
17<tr>
18<td>
19<asp:datalist id="DataList1" repeatcolumns="3" runat="server">
20<itemtemplate>
21<font face="宋体">
22<table border="1" bordercolordark="white" cellpadding="1" cellspacing="1" width="100%">
23<tr>
24<td><font color="red" face="宋体">
25<asp:label id="Label1" runat="server" text='```
26# Container.ItemIndex + ":" + DataBinder.Eval(Container.DataItem,"C_TypeName")
27```'>
28</asp:label>
29<asp:label id="lblTypeId" runat="server" text='```
30# DataBinder.Eval(Container.DataItem,"I_TypeID")
31```' visible="False">
32</asp:label>
33</font></td>
34</tr>
35<tr>
36<td>
37<asp:datalist id="DataList2" runat="server">
38<itemtemplate>
39<table border="1" bordercolordark="white" cellpadding="1" cellspacing="1" width="100%">
40<tr>
41<td>
42<asp:label id="Label2" runat="server" text='```
43# DataBinder.Eval(Container.DataItem,"C_Name")
44```'>
45</asp:label></td>
46</tr>
47</table>
48<font face="宋体"></font>
49</itemtemplate>
50<alternatingitemtemplate>
51<table border="1" bordercolordark="white" cellpadding="1" cellspacing="1" width="100%">
52<tr>
53<td><font color="#003333" face="宋体">
54<asp:label id="Label6" runat="server" text='```
55# DataBinder.Eval(Container.DataItem,"C_Name")
56```'>
57</asp:label></font></td>
58</tr>
59</table>
60<font face="宋体"></font>
61</alternatingitemtemplate>
62</asp:datalist></td>
63</tr>
64</table>
65</font>
66</itemtemplate>
67<alternatingitemtemplate>
68<font face="宋体">
69<table border="1" bordercolordark="white" cellpadding="1" cellspacing="1" width="100%">
70<tr>
71<td><font color="red" face="宋体">
72<asp:label id="Label3" runat="server" text='```
73# Container.ItemIndex + ":" + DataBinder.Eval(Container.DataItem,"C_TypeName")
74```'>
75</asp:label>
76<asp:label id="lblTypeID1" runat="server" text='```
77# DataBinder.Eval(Container.DataItem,"I_TypeID")
78```' visible="False">
79</asp:label>
80</font></td>
81</tr>
82<tr>
83<td>
84<asp:datalist id="Datalist3" runat="server">
85<itemtemplate>
86<table border="1" bordercolordark="white" cellpadding="1" cellspacing="1" width="100%">
87<tr>
88<td>
89<asp:label id="Label4" runat="server" text='```
90# DataBinder.Eval(Container.DataItem,"C_Name")
91```'>
92</asp:label></td>
93</tr>
94</table>
95<font face="宋体"></font>
96</itemtemplate>
97<alternatingitemtemplate>
98<table border="1" bordercolordark="white" cellpadding="1" cellspacing="1" width="100%">
99<tr>
100<td><font color="#003333" face="宋体">
101<asp:label id="Label5" runat="server" text='```
102# DataBinder.Eval(Container.DataItem,"C_Name")
103```'>
104</asp:label></font></td>
105</tr>
106</table>
107<font face="宋体"></font>
108</alternatingitemtemplate>
109</asp:datalist></td>
110</tr>
111</table>
112</font>
113</alternatingitemtemplate>
114</asp:datalist></td>
115</tr>
116</table>
117</form>
118</body>
119</html>
'--------后台代码DLNested.aspx.cs:
/----------------------------------------------------------------
// 版权所有: 亿思维软件工作室
// 网站地址: Http://www.easewe.com
// 联系方式: 87015203(QQ),[email protected](Email)
// 整理日期: 2005.09.14
//----------------------------------------------------------------/
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
namespace Example
{
///
1<summary>
2/// DateListNested 的摘要说明。
3/// </summary>
public class DateListNested : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataList DataList1;
protected string connString;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
connString = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Request.PhysicalApplicationPath + "DataList.mdb";
if ( !Page.IsPostBack )
{
BindData();
//BindArticle();
}
}
private void BindData()
{
string commandText = "select * from ArticleType";
//----------
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = connString;
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(commandText,conn);
DataSet ds = new DataSet();
da.Fill(ds,"ArticleType");
conn.Close();
//----------
DataList1.DataSource = ds.Tables["ArticleType"];
DataList1.DataBind();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
///
1<summary>
2/// 设计器支持所需的方法 - 不要使用代码编辑器修改
3/// 此方法的内容。
4/// </summary>
private void InitializeComponent()
{
this.DataList1.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.DataList1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
{
DataList dl = null;
Label lblTypeID = null;
if ( e.Item.ItemType == ListItemType.Item )
{
dl = (DataList)e.Item.FindControl("DataList2");
lblTypeID = (Label)e.Item.FindControl("lblTypeID");
}
else
{
dl = (DataList)e.Item.FindControl("DataList3");
lblTypeID = (Label)e.Item.FindControl("lblTypeID1");
}
string typeID = lblTypeID.Text.ToString();
string commandText = "select * from Article";
commandText = commandText + " Where I_TypeID=" + typeID;
//------------
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = connString;
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(commandText,conn);
DataSet ds = new DataSet();
da.Fill(ds,"Article");
conn.Close();
//------------
dl.DataSource = ds.Tables["Article"];
dl.DataBind();
}
}
}
}
_ 下载源程序 _
_ 查看运行实例 _