设为首页
加入收藏
联系站长
您现在的位置: 网贝 >> 建站学院 >> ASP.NET >> winform应用 >> 文章正文 用户登录 新用户注册
[组图]嵌套的DataGrid如何为子DataGrid动态增加模板列         ★★★
嵌套的DataGrid如何为子DataGrid动态增加模板列
相关网站:
作者:lovecher… 文章来源:http://www.cnblogs.com/lovecherry 点击数: 更新时间:2005-6-21
 

例子比较简单,直接贴代码了,例子达到以下功能:
(1)两个DataGrid嵌套
(2)外面一个DataGrid分页
(3)里面一个DataGrid动态增加模板列 

<%@ Page language="c#" Codebehind="WebForm45.aspx.cs" AutoEventWireup="false" Inherits="csdn2.WebForm45" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    
<HEAD>
        
<title>Test</title>
        
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        
<meta content="C#" name="CODE_LANGUAGE">
        
<meta content="JavaScript" name="vs_defaultClientScript">
        
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    
</HEAD>
    
<body>
        
<form id="Form1" method="post" runat="server">
            
<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" PageSize="2" AllowPaging="True">
                
<Columns>
                    
<asp:TemplateColumn HeaderText="分类名">
                        
<ItemTemplate>
                            
<%# DataBinder.Eval(Container.DataItem, "classname"%>
                            
<asp:DataGrid id="DataGrid2" runat="server" AutoGenerateColumns="false"></asp:DataGrid>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                
</Columns>
            
</asp:datagrid></form>
    
</body>
</HTML>


 

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace csdn2
{
    
/// <summary>
    
/// WebForm45 的摘要说明。
    
/// </summary>

    public class WebForm45 : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DataGrid DataGrid1;
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            if(!IsPostBack)
            
{
                SetBind();
            }

        }


        
private void SetBind()
        
{
            SqlConnection conn
=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
            SqlDataAdapter da
=new SqlDataAdapter("select * from class;select * from topic",conn);
            DataSet ds
=new DataSet();
            da.Fill(ds);
            ds.Relations.Add(
"class_topic",ds.Tables[0].Columns["classid"],ds.Tables[1].Columns["topicclassid"]);
            
this.DataGrid1.DataSource=ds.Tables[0];
            
this.DataGrid1.DataBind();
        }


        
#region Web 窗体设计器生成的代码
        
override protected void OnInit(EventArgs e)
        
{
            
//
            
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            
//
            InitializeComponent();
            
base.OnInit(e);
        }

        
        
/// <summary>
        
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
        
/// 此方法的内容。
        
/// </summary>

        private void InitializeComponent()
        
{    
            
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
            
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
            
this.Load += new System.EventHandler(this.Page_Load);

        }

        
#endregion


        
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        
{
            
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
            
{
                DataGrid dgrd
=(DataGrid)e.Item.FindControl("DataGrid2");
                dgrd.ItemDataBound 
+= new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid2_ItemDataBound);
                TemplateColumn tm
=new TemplateColumn(); 
                tm.ItemTemplate
=new ColumnTemplate(); 
                tm.HeaderText
="主题名"
                dgrd.Columns.Add(tm); 
                dgrd.DataSource
=((DataRowView)e.Item.DataItem).Row.GetChildRows("class_topic");
                dgrd.DataBind();
            }

        }


        
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
        
{
            
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
            SetBind();
        
        }


        
private void DataGrid2_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        
{
            
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
            
{
                ((Label)e.Item.FindControl(
"topicname")).Text=Convert.ToString(DataBinder.Eval(e.Item.DataItem,"[\"topicname\"]"));
            }

        }

    }


    
public class ColumnTemplate : ITemplate 
    

        
public void InstantiateIn(Control container)       
        

            Label l
=new Label(); 
            l.ID
="topicname";
            container.Controls.Add(l); 
        }
 
    }
 
}

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    相关网站:

    文章 下载 图片
    普通文章[组图]DataGrid在Po
    普通文章[图文]DataGrid的Ed
    普通文章[图文]方便的使用单
    普通文章[组图]为DataGrid添
    普通文章[组图]如何用DataGr
    普通文章[组图]嵌套的DataGr
    普通文章[组图]如何利用Data
    普通文章[组图]联合主键的情
  • 此栏目下没有推荐文章
  • 普通文章把手教你写私服列表
    普通文章WEB标准
    普通文章GOOGLE sitemap官方
    普通文章用php定制404错误页
    普通文章WAP(wml)开发问答
    普通文章[组图]PS教程系列:快
    普通文章时使用apache和IIS,
    普通文章[组图]2005年的第一
    推荐文章[组图]彻底掌握IIS6
    推荐文章[组图]CSS 全攻略
    推荐文章各种脚本错误详解!
    推荐文章直接生成XML的Googl
    推荐文章九个常见的错误原因
    推荐文章Win XP家用版也能装
    推荐文章JSP入门初级教程之J
    推荐文章ASP入门及提高
  • DataGrid在PostB

  • DataGrid的EditC

  • 方便的使用单击和

  • 为DataGrid添加自

  • 如何用DataGrid实


  • DataGrid在PostBack

    DataGrid的EditComm

    方便的使用单击和双

    为DataGrid添加自定
    (只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    Copyright © 2003-2005 NetBei.com All rights reserved.