利用DataGrid控件显示主从数据表内容


环境: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();//释放


   }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值