环境:Visual Studio .NET 2005+SqlServer 2000
数据库结构:
父表:news_type:
字段:id,news_type_name,news_type_id
子表:news_class:
字段:id,news_class_name,news_class_id,news_type_id
公共字段:news_type_id
type_manage.aspx:
<%@ Import Namespace="System.Data" %>
<!--DataRowView位于System.Data 命名空间,在WEB FORM中,该命名空间不是自动引用的,需加入下列语句:<%@ Import Namespace="System.Data"%>
否则出现:找不到类型或命名空间名称“DataRowView”(是否缺少 using 指令或程序集引用?)
-->
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="type_manage.aspx.cs" Inherits="type_manage" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>类别管理</title>
</head>
<body>
<form id="Form1" runat="server">
<!-- 父DataGrid开始 -->
<asp:DataGrid id="parentDataGrid" runat="server" AutoGenerateColumns="false" Width=90% ShowHeader="False">
<Columns>
<asp:TemplateColumn>
<itemtemplate>
<b>
<%# DataBinder.Eval(Container.DataItem,"news_type_id") %>、
<%# DataBinder.Eval(Container.DataItem,"news_type_name") %>:
</b>
<br>
<!-- 子DataGrid开始 -->
<asp:DataGrid id="childDataGrid" runat="server"
datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation")%>' AutoGenerateColumns="false" Width=90% HorizontalAlign=center ShowHeader=false>
<Columns>
<asp:TemplateColumn>
<itemtemplate>
· <%# DataBinder.Eval(Container.DataItem, "[/"news_class_name/"]")%>
<br>
</itemtemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<!-- 子DataGrid结束 -->
</itemtemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<!-- 父DataGrid结束 -->
</form>
</body>
</html>
type_manage.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;
using System.Data.SqlClient;
using System.Configuration;
public partial class type_manage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//创建Connection,连接数据库
SqlConnection cnn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
cnn.Open();
//创建DataSet对象
DataSet ds = new DataSet();
// 为父表news_type创建DataAdapter
SqlDataAdapter TypeDat = new SqlDataAdapter("select * from news_type", cnn);
//填充 DataSet.
TypeDat.Fill(ds, "news_type");
// 为子表news_class子表创建 DataAdapter
SqlDataAdapter ClassDat = new SqlDataAdapter("select * from news_class", cnn);
//填充 DataSet.
ClassDat.Fill(ds, "news_class");
// 创建父表 news_type 和子表 news_class之间的关系:公共字段news_type_id
ds.Relations.Add("myrelation",
ds.Tables["news_type"].Columns["news_type_id"],//父表
ds.Tables["news_class"].Columns["news_type_id"]);//子表
// 绑定news_type到父DataGrid
parentDataGrid.DataSource = ds.Tables["news_type"];
Page.DataBind();//整个页面
// parentDataGrid.DataBind();
cnn.Close();//关闭
cnn.Dispose();//释放
}
}