例子比較簡單,直接貼代碼了,例子達到以下功能: 
(1)兩個datagrid嵌套 
(2)外面一個datagrid分頁 
(3)里面一個datagrid動態增加模板列   
 

 <%
<% @ page language="c#" codebehind="webform45.aspx.cs" autoeventwireup="false" inherits="csdn2.webform45" %>
@ page language="c#" codebehind="webform45.aspx.cs" autoeventwireup="false" inherits="csdn2.webform45" %>  <!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >  <html>
<html>  <head>
    <head>  <title>test</title>
        <title>test</title>  <meta content="microsoft visual studio .net 7.1" name="generator">
        <meta content="microsoft visual studio .net 7.1" name="generator">  <meta content="c#" name="code_language">
        <meta content="c#" name="code_language">  <meta content="javascript" name="vs_defaultclientscript">
        <meta content="javascript" name="vs_defaultclientscript">  <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetschema">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetschema">  </head>
    </head>  <body>
    <body>  <form id="form1" method="post" runat="server">
        <form id="form1" method="post" runat="server">  <asp:datagrid id="datagrid1" runat="server" autogeneratecolumns="false" pagesize="2" allowpaging="true">
            <asp:datagrid id="datagrid1" runat="server" autogeneratecolumns="false" pagesize="2" allowpaging="true">  <columns>
                <columns>  <asp:templatecolumn headertext="分類名">
                    <asp:templatecolumn headertext="分類名">  <itemtemplate>
                        <itemtemplate> 
 <%
                            <% # databinder.eval(container.dataitem, "classname") %>
# databinder.eval(container.dataitem, "classname") %>  <asp:datagrid id="datagrid2" runat="server" autogeneratecolumns="false"></asp:datagrid>
                            <asp:datagrid id="datagrid2" runat="server" autogeneratecolumns="false"></asp:datagrid>  </itemtemplate>
                        </itemtemplate>  </asp:templatecolumn>
                    </asp:templatecolumn>  </columns>
                </columns>  </asp:datagrid></form>
            </asp:datagrid></form>  </body>
    </body>  </html>
</html>  
 
  
 using system;
using system;  using system.collections;
using system.collections;  using system.componentmodel;
using system.componentmodel;  using system.data;
using system.data;  using system.data.sqlclient;
using system.data.sqlclient;  using system.drawing;
using system.drawing;  using system.web;
using system.web;  using system.web.sessionstate;
using system.web.sessionstate;  using system.web.ui;
using system.web.ui;  using system.web.ui.webcontrols;
using system.web.ui.webcontrols;  using system.web.ui.htmlcontrols;
using system.web.ui.htmlcontrols;  
  namespace csdn2
namespace csdn2 

 {
{ 
 /**//// <summary>
    /**//// <summary>  /// webform45 的摘要說明。
    /// webform45 的摘要說明。  /// </summary>
    /// </summary>  public class webform45 : system.web.ui.page
    public class webform45 : system.web.ui.page 
 
     {
{  protected system.web.ui.webcontrols.datagrid datagrid1;
        protected system.web.ui.webcontrols.datagrid datagrid1;  
      private void page_load(object sender, system.eventargs e)
        private void page_load(object sender, system.eventargs e) 
 
         {
{  // 在此處放置用戶代碼以初始化頁面
            // 在此處放置用戶代碼以初始化頁面  if(!ispostback)
            if(!ispostback) 
 
             {
{  setbind();
                setbind();  }
            }  }
        }  
  private void setbind()
        private void setbind() 
 
         {
{  sqlconnection conn=new sqlconnection(system.configuration.configurationsettings.appsettings["conn"]);
            sqlconnection conn=new sqlconnection(system.configuration.configurationsettings.appsettings["conn"]);  sqldataadapter da=new sqldataadapter("select * from class;select * from topic",conn);
            sqldataadapter da=new sqldataadapter("select * from class;select * from topic",conn);  dataset ds=new dataset();
            dataset ds=new dataset();  da.fill(ds);
            da.fill(ds);  ds.relations.add("class_topic",ds.tables[0].columns["classid"],ds.tables[1].columns["topicclassid"]);
            ds.relations.add("class_topic",ds.tables[0].columns["classid"],ds.tables[1].columns["topicclassid"]);  this.datagrid1.datasource=ds.tables[0];
            this.datagrid1.datasource=ds.tables[0];  this.datagrid1.databind();
            this.datagrid1.databind();  }
        }  
 
 web 窗體設計器生成的代碼#region web 窗體設計器生成的代碼
        web 窗體設計器生成的代碼#region web 窗體設計器生成的代碼  override protected void oninit(eventargs e)
        override protected void oninit(eventargs e) 
 
         {
{  //
            //  // codegen: 該調用是 asp.net web 窗體設計器所必需的。
            // codegen: 該調用是 asp.net web 窗體設計器所必需的。  //
            //  initializecomponent();
            initializecomponent();  base.oninit(e);
            base.oninit(e);  }
        }  
         
 /**//// <summary>
        /**//// <summary>  /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
        /// 設計器支持所需的方法 - 不要使用代碼編輯器修改  /// 此方法的內容。
        /// 此方法的內容。  /// </summary>
        /// </summary>  private void initializecomponent()
        private void initializecomponent() 
 
         {
{      this.datagrid1.pageindexchanged += new system.web.ui.webcontrols.datagridpagechangedeventhandler(this.datagrid1_pageindexchanged);
            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.datagrid1.itemdatabound += new system.web.ui.webcontrols.datagriditemeventhandler(this.datagrid1_itemdatabound);  this.load += new system.eventhandler(this.page_load);
            this.load += new system.eventhandler(this.page_load);  
  }
        }  #endregion
        #endregion  
  private void datagrid1_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e)
        private void datagrid1_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e) 
 
         {
{  if(e.item.itemtype==listitemtype.item||e.item.itemtype==listitemtype.alternatingitem)
            if(e.item.itemtype==listitemtype.item||e.item.itemtype==listitemtype.alternatingitem) 
 
             {
{  datagrid dgrd=(datagrid)e.item.findcontrol("datagrid2");
                datagrid dgrd=(datagrid)e.item.findcontrol("datagrid2");  dgrd.itemdatabound += new system.web.ui.webcontrols.datagriditemeventhandler(this.datagrid2_itemdatabound);
                dgrd.itemdatabound += new system.web.ui.webcontrols.datagriditemeventhandler(this.datagrid2_itemdatabound);  templatecolumn tm=new templatecolumn();
                templatecolumn tm=new templatecolumn();   tm.itemtemplate=new columntemplate();
                tm.itemtemplate=new columntemplate();   tm.headertext="主題名";
                tm.headertext="主題名";   dgrd.columns.add(tm);
                dgrd.columns.add(tm);   dgrd.datasource=((datarowview)e.item.dataitem).row.getchildrows("class_topic");
                dgrd.datasource=((datarowview)e.item.dataitem).row.getchildrows("class_topic");  dgrd.databind();
                dgrd.databind();  }
            }  }
        }  
  private void datagrid1_pageindexchanged(object source, system.web.ui.webcontrols.datagridpagechangedeventargs e)
        private void datagrid1_pageindexchanged(object source, system.web.ui.webcontrols.datagridpagechangedeventargs e) 
 
         {
{  this.datagrid1.currentpageindex=e.newpageindex;
            this.datagrid1.currentpageindex=e.newpageindex;  setbind();
            setbind();  
          }
        }  
  private void datagrid2_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e)
        private void datagrid2_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e) 
 
         {
{  if(e.item.itemtype==listitemtype.item||e.item.itemtype==listitemtype.alternatingitem)
            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/"]"));
                ((label)e.item.findcontrol("topicname")).text=convert.tostring(databinder.eval(e.item.dataitem,"[/"topicname/"]"));  }
            }  }
        }  }
    }  
  public class columntemplate : itemplate
    public class columntemplate : itemplate  
 
     {
{   public void instantiatein(control container)
        public void instantiatein(control container)        
 
         {
{   label l=new label();
            label l=new label();   l.id="topicname";
            l.id="topicname";  container.controls.add(l);
            container.controls.add(l);   }
        }   }
    }   }
}  
新聞熱點
疑難解答