首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
wangchinaking (57)
yjz0065 (113)
coofucoo (105)
Drate (69)
lphpc (30)
smallnest (61)
iiprogram (64)
downmoon (32)
danny_xcz (49)
btbtd (81)
CSDN - 文档中心 - .NET 阅读:5740   评论: 8    参与评论
标题   DataGrid中嵌套使用Repeater     选择自 ouyang76cn 的 Blog
关键字   asp.net,DataGrid,c#,嵌套,Repeater
出处  

本文描述了如何把Repeater 控件嵌套进DataGrid来显示分级的数据 。当然,你也可以将这一技术应用到其他的列表绑定控件上去,比如DataGrid包含DataGrid,DataList包含DataList等等的组合。

完整的代码 如下,要注意的是,

   DataGrid1.DataSource=dv;
    DataGrid1.DataBind();

一定要在ds.Relations.Add(..)之后..

<%@import namespace="System.Data" %>
<%@import namespace="System.Data.OleDb"%>
<script language="c#" runat="server">
string connstr=ConfigurationSettings.AppSettings["ConnectionString"];

//小区信息
string sql="select * from location where location_id in(select location from catalyst)";
//交换机信息
string sqltext="select * from catalyst order by location desc";

private void page_load(Object obj,EventArgs e)
{
  if(!Page.IsPostBack)
   {
     Dataload();
   }
}

private void Dataload()
{
     try
  { 
    OleDbConnection conn=new  OleDbConnection(connstr);
    DataSet ds=new DataSet();
    OleDbDataAdapter da=new OleDbDataAdapter(sql,conn);
    da.Fill(ds,"location");
    DataView dv=new DataView(ds.Tables["location"]);

    OleDbDataAdapter da2=new OleDbDataAdapter(sqltext,conn);
    da2.Fill(ds,"catalyst");
    ds.Relations.Add("myrelation",ds.Tables["location"].Columns["location_id"],ds.Tables["catalyst"].Columns["location"]);

    DataGrid1.DataSource=dv;
    DataGrid1.DataBind();

    conn.Close();
  }
  catch(OleDbException ex)
  {
    info.Text=ex.Message;
  }                
}
</script>
<html>
<body>
<form runat=server>

<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="false">
  <Columns>
   <asp:TemplateColumn HeaderText="小区名">
   <ItemTemplate>
      <%# DataBinder.Eval(Container.DataItem,"location_name") %>
   </ItemTemplate>
   </asp:TemplateColumn>
   <asp:TemplateColumn HeaderText="交换机编号">
   <ItemTemplate>
     <asp:Repeater id="ChildRepeater" DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>' runat="server">
         <ItemTemplate>
            <%# Container.ItemIndex+1%>.<%# DataBinder.Eval(Container.DataItem, "[\"label\"]")%><br>
         </ItemTemplate>
      </asp:Repeater>
   </ItemTemplate>
   </asp:TemplateColumn>
  </Columns>
</asp:DataGrid>


</form>
<asp:label id="info" forecolor="blue" runat="server"/>
</body>
</html>


相关文章
对该文的评论
CSDN 网友 ( 2006-03-28)
repeater中button事件如何处理?
eyis ( 2005-12-12)
里面的Repeater如何分页呢
CSDN 网友 ( 2005-08-15)
一般,一般
CSDN 网友 ( 2005-01-28)
不过 我喜欢用DataList套DataList。利用DataList的项模板做为另外一个DataList引用参数的嵌套
CSDN 网友 ( 2004-11-29)
.net真伟大,我最近也遇到个这方面的问题,你的帖子太简洁了,一针见血。