CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

DataGrid如何绑定显示一个对象集合?

楼主ssfeng(山水)2002-11-20 15:45:41 在 .NET技术 / C# 提问

比如我有个Users的对象集合,其中包含了N个User对象,而每个User对象又包含了一个Frineds集合对象。每个Friends集合对象又包含了N个Friend对象。  
  我如何用DataGrid平行的显示出这样的一个对象集合呢?  
   
  问题点数:100、回复次数:7Top

1 楼7710703(易水寒)回复于 2002-11-20 16:43:29 得分 0

我记得在MSDN上面有这方面的例子,把DateGrid的每行分成了好几行。你可以看一看,不过好像不能直接进行绑定,还得进行一下其他的处理。Top

2 楼ssfeng(山水)回复于 2002-11-20 17:40:08 得分 0

难道要把对象都再拆成DataSet吗?Top

3 楼ssfeng(山水)回复于 2002-11-21 10:14:03 得分 0

谁能帮我解决这个问题呢?  
  可惜csdn给的最高分就100,要不我再加分。Top

4 楼saucer(思归)回复于 2002-11-22 07:04:55 得分 100

try   something   like  
   
   
   
  <script   language="C#"   runat="server">  
  class   User  
  {  
      string   m_sName;  
      public   ArrayList   friends   =   new   ArrayList();  
   
      public   string   Name  
      {  
  get   {return   m_sName;}  
  set   {m_sName   =   value;}  
      }  
   
      public   User(string   sName)  
      {  
  Name   =   sName;  
      }  
  }  
   
  class   Friend  
  {  
      string   m_sName;  
      string   m_sNickName;  
      public   ArrayList   friends   =   new   ArrayList();  
   
   
      public   string   Name  
      {  
  get   {return   m_sName;}  
  set   {m_sName   =   value;}  
      }  
   
   
      public   string   NickName  
      {  
  get   {return   m_sNickName;}  
  set   {m_sNickName   =   value;}  
      }  
   
      public   Friend(string   sName,   string   sNickName)  
      {  
  Name   =   sName;  
  NickName   =   sNickName;  
      }  
  }  
   
  void   Page_Load(Object   sender,   EventArgs   e)  
  {  
      ArrayList   a   =   new   ArrayList();  
      User   u;  
      Friend   f,f2;  
   
      u   =   new   User("John");  
      f   =   new   Friend("Sam",   "The   Dog");  
       
      f2   =   new   Friend("Tim",   "Puppy");  
      f.friends.Add(f2);  
   
      f2   =   new   Friend("Bill",   "Hedge");  
      f.friends.Add(f2);  
   
      u.friends.Add(f);  
   
   
      f   =   new   Friend("David",   "The   Cat");  
       
      f2   =   new   Friend("Tom",   "Wacko");  
      f.friends.Add(f2);  
   
      f2   =   new   Friend("Larry",   "Snake");  
      f.friends.Add(f2);  
   
      f2   =   new   Friend("Adam",   "Dude");  
      f.friends.Add(f2);  
   
      u.friends.Add(f);  
   
      a.Add(u);  
   
      //add   more   users   here  
   
      DataGrid1.DataSource   =   a;  
      DataGrid1.DataBind();  
   
  }  
   
  protected   void   OnItemDataBound(object   sender,   DataGridItemEventArgs   e)  
  {  
      if(e.Item.ItemType   ==   ListItemType.Item   ||   e.Item.ItemType   ==   ListItemType.AlternatingItem)  
      {  
  ArrayList   a;  
  if   (e.Item.DataItem   is   User)  
  {  
  a   =   ((User)e.Item.DataItem).friends;  
  }  
  else  
  {  
  a   =   ((Friend)e.Item.DataItem).friends;  
  }  
   
  if   (a.Count   >   0)  
  {  
   
  DataGrid   dg   =   new   DataGrid();  
   
  dg.ItemDataBound   +=   new     DataGridItemEventHandler   (OnItemDataBound);  
  dg.DataSource   =   a;  
  dg.DataBind();  
   
  TableCell   tc   =   new   TableCell();  
  tc.Controls.Add(dg);  
  e.Item.Cells.Add(tc);  
  }  
   
      }  
  }  
  </script>  
  <asp:datagrid   id="DataGrid1"   runat="server"   OnItemDataBound="OnItemDataBound"/>  
  Top

5 楼qieyj(温馨港湾)回复于 2002-11-22 09:34:11 得分 0

给你一个不同的绑定风格  
   
  datagrid_bgjj.TableStyles.Clear()   ;  
  string   dg_cond;  
  DataSet   dg_ds   =   new   DataSet();  
  dg_cond   =   "select   *   from   bgjj_table   where   ssbm   ="   +   lv_nodenum   ;  
  lv_bgjj.Visible   =   false   ;  
  SqlDataAdapter   dg_sqldataAdapter   =   new   SqlDataAdapter(dg_cond   ,sqlConnection1);  
  try  
  {  
  sqlConnection1.Open();  
  dg_sqldataAdapter.Fill(dg_ds,"bgjj");  
  }  
  finally  
  {  
  sqlConnection1.Close();  
  }  
  //绑定数据源  
  datagrid_bgjj.DataSource   =   dg_ds.Tables["bgjj"].DefaultView;  
  //设置显示风格  
  DataGridTableStyle   dgts   =   new   DataGridTableStyle();  
  dgts.MappingName   =   "bgjj"   ;  
  dgts.ReadOnly     =   true   ;  
  datagrid_bgjj.TableStyles.Add(dgts);Top

6 楼ssfeng(山水)回复于 2002-11-22 09:53:31 得分 0

非常感谢各位!  
   
    saucer(思归)这个名字很耳熟,好像我的几个问题都是你给的提示哦!:)  
  我马上去试试!  
   
  还有一个问题,是关于OOP的,也请帮忙看看好吗?  
  http://expert.csdn.net/Expert/topic/1191/1191982.xmlTop

7 楼ssfeng(山水)回复于 2002-11-22 12:01:21 得分 0

问题解决,谢谢!Top

相关问题

  • 需要将对象集合同DATAGRID进行绑定,高分
  • DATAGRID绑定对象后如何返回对象?
  • datagrid怎样绑定Recordset对象????
  • DataGrid绑定对象数组的问题!
  • 如何把对象绑定到datagrid上?
  • Workbook 对象与Workbooks 集合对象有什么区别?
  • 把一个对像集合绑定到DataGrid,怎么进行columntext排序?
  • 怎样得到FORM里的对象集合,及此集合的长度
  • sqlcommand对象的Parameters集合有什么用?
  • 怎样将一个Array对象放入Application集合当中?(javascript)

关键词

  • datagrid
  • ds
  • bgjj
  • 集合
  • 对象
  • dgts
  • dg
  • 绑定
  • 显示
  • sqldataadapter

得分解答快速导航

  • 帖主:ssfeng
  • saucer

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo