使用DataGrid控件实现以主细表显示数据


实现步骤
第一,在页面上加入2个DataGrid(dgMaster,dgDetail),设置好样式;
第二,在dgMaster中添加一个模板列,并且将dgDetail加入到模板中

< asp:DataGrid  id ="dgMaster"  style ="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 64px"  runat ="server"
                AutoGenerateColumns
="False"  ShowHeader ="False"  Width ="368px" >
                
< Columns >
                    
< asp:TemplateColumn >
                        
< ItemTemplate >
                            
< TABLE  cellSpacing ="0"  cellPadding ="0"  width ="100%"  border ="0" >
                                
< TR >
                                    
< TD  bgColor ="#3399ff" >< FONT  color ="#ffffff" >< B > 订单号:
                                                
<% # DataBinder.Eval(Container.DataItem, "OrderID" %>
                                            
</ B ></ FONT >
                                    
</ TD >
                                
</ TR >
                                
< TR >
                                    
< TD  align ="right" >
                                        
< asp:DataGrid  id =dgDetail  runat ="server"  Width ="100%"  AutoGenerateColumns ="False"  Font-Size ="Smaller"  GridLines ="Horizontal"  CellPadding ="4"  BackColor ="White"  BorderWidth ="3px"  BorderStyle ="Double"  BorderColor ="#336666"  DataKeyField ="OrderID"  DataSource ='<%#  ((System.Data.DataRowView)Container.DataItem).CreateChildView("tableRelation") % > '>
                                            
< SelectedItemStyle  Font-Bold ="True"  ForeColor ="White"  BackColor ="#339966" ></ SelectedItemStyle >
                                            
< ItemStyle  ForeColor ="#333333"  BackColor ="White" ></ ItemStyle >
                                            
< HeaderStyle  Font-Bold ="True"  ForeColor ="White"  BackColor ="#336666" ></ HeaderStyle >
                                            
< FooterStyle  ForeColor ="#333333"  BackColor ="White" ></ FooterStyle >
                                            
< Columns >
                                                
< asp:BoundColumn  Visible ="False"  DataField ="OrderID"  ReadOnly ="True" ></ asp:BoundColumn >
                                                
< asp:TemplateColumn  HeaderText ="产品名称" >
                                                    
< HeaderStyle  Width ="250px" ></ HeaderStyle >
                                                    
< ItemTemplate >
                                                        
<% # DataBinder.Eval(Container.DataItem, "ProductName" %>
                                                    
</ ItemTemplate >
                                                
</ asp:TemplateColumn >
                                                
< asp:BoundColumn  DataField ="UnitPrice"  HeaderText ="单价"  DataFormatString ="{0:c}" ></ asp:BoundColumn >
                                                
< asp:BoundColumn  DataField ="Quantity"  HeaderText ="数量" ></ asp:BoundColumn >
                                                
< asp:BoundColumn  DataField ="Discount"  HeaderText ="折扣" ></ asp:BoundColumn >
                                            
</ Columns >
                                            
< PagerStyle  HorizontalAlign ="Center"  ForeColor ="White"  BackColor ="#336666"  Mode ="NumericPages" ></ PagerStyle >
                                        
</ asp:DataGrid ></ TD >
                                
</ TR >
                            
</ TABLE >
                        
</ ItemTemplate >
                    
</ asp:TemplateColumn >
                
</ Columns >
            
</ asp:DataGrid >


第三,在添加代码

private   void  Page_Load( object  sender, System.EventArgs e)
        
{
            
//页面初试化时进行数据绑定
            if(!IsPostBack)
                DataGridDataBind();
        }


        
private   void  DataGridDataBind()
        
{
            
//定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的
            SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionSqlServer"].ToString());
            
//创建数据适配器对象
            SqlDataAdapter da = new SqlDataAdapter("Select top 5 * from Orders  select OrderID ,Products.ProductName,[order Details].Unitprice,[order Details].Quantity,[order Details].discount from [order Details],Products where [Order Details].ProductId=Products.ProductID",conn);
            
//创建DataSet对象
            DataSet ds = new DataSet();
            
try
            
{
                
//填充数据集
                da.Fill(ds);
                
//设定表名字
                ds.Tables[0].TableName = "Orders";
                ds.Tables[
1].TableName = "Order Details";
                DataColumn Parent 
= ds.Tables["Orders"].Columns["OrderID"];
                DataColumn Child  
= ds.Tables["Order Details"].Columns["OrderID"];
                DataRelation tableRelation 
= new DataRelation("tableRelation", Parent, Child, false);
                ds.Relations.Add(tableRelation);
                
//进行数据绑定
                dgMaster.DataSource = ds.Tables["Orders"].DefaultView;
                dgMaster.DataBind();
            }

            
catch(Exception error)
            
{
                Response.Write(error.ToString());
            }
    
        }
0
0
(请您对文章做出评价)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值