CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

请问DataGrid能不能有两个标题行?

楼主lufree(荆州城公子三求计,博望坡军师初用兵)2004-09-01 01:50:31 在 .NET技术 / ASP.NET 提问

就是除了默认的标题行外,再给他添加一个标题行。  
   
  主要是想实现某些列跨2行的标题行的效果,当然也可以按照孟子前辈的方法在上面构建一个Table,下面放DataGrid,但是还想试试这种方法。  
   
  如果可以的话,那么就可以在DataGrid的ItemCreated方法里写以下代码了.  
   
  TableCell   cell   =   (TableCell)e.Item.Cells[0];  
  cell.RowSpan   =   2;  
   
  请指教.谢谢 问题点数:20、回复次数:10Top

1 楼saucer(思归)回复于 2004-09-01 03:33:01 得分 20

yes,   try  
   
   
  <%@   Import   Namespace="System.Data"   %>  
  <%@   Import   Namespace="System.Data.SqlClient"   %>  
  <script   language="C#"   runat='server'>  
  void   Page_Load(Object   sender,   EventArgs   e)  
  {  
    if   (!IsPostBack)  
    {  
      SqlDataAdapter   da   =   new   SqlDataAdapter("select   *   from   authors",   "server=localhost;database=pubs;uid=sa;pwd=;");  
      DataTable   dt   =   new   DataTable();  
      da.Fill(dt);  
   
      DataGrid1.DataSource=   dt.DefaultView;  
      DataGrid1.DataBind();  
    }  
  }  
   
  private   void   AddHeaderRow()    
  {  
      Table   t   =   (Table)DataGrid1.Controls[0];  
   
      DataGridItem   tr   =   new   DataGridItem(0,0,ListItemType.Header);    
   
      TableCell   tc   =   new   TableCell();  
      tc.ColumnSpan   =   3;  
      tc.Text   =   "hello   world";  
      tc.BackColor   =   System.Drawing.Color.Red;  
      tc.HorizontalAlign   =   HorizontalAlign.Center;  
   
      tr.Cells.Add(tc);  
   
      TableCell   tc2   =   new   TableCell();  
      tc2.ColumnSpan   =   6;  
      tc2.BackColor   =   System.Drawing.Color.Green;  
      tc2.Text   =   "multiple   columns";  
      tc2.HorizontalAlign   =   HorizontalAlign.Center;  
   
      tr.Cells.Add(tc2);  
   
      t.Rows.AddAt(0,tr);  
  }  
   
   
  void   DataGrid1_ItemCreated(Object   sender,   DataGridItemEventArgs   e)    
  {  
      if(e.Item.ItemType   ==   ListItemType.Header)  
        {                    
            AddHeaderRow();  
        }                      
  }  
   
  </script>  
  <form   runat="server">  
  <asp:TextBox   runat="server"   />  
  <asp:DataGrid   id="DataGrid1"   runat="server"   OnItemCreated="DataGrid1_ItemCreated"/>  
  <asp:Button   runat=server   Text="Refresh"   />  
  </form>Top

2 楼triout(笨牛)回复于 2004-09-01 08:27:43 得分 0

默认情况是不可以的。  
   
  你可以  
  1——  
  通过自定义列自定义列头,实现假的双行列标题  
   
  2——  
  改写DATAGRID控件  
   
  3——  
  自己写类DATAGRID的控件实现这样的功能。Top

3 楼jamzh(Show me the money!!!)回复于 2004-09-01 09:11:33 得分 0

写一个函数先将数据搜出来。找出相同的记录,然后合并单元格。原来做过,不过没有代码了!Top

4 楼onlytiancai(谁染枫林醉)回复于 2004-09-01 09:23:57 得分 0

很不错,经典,收藏了,asp.net   pro杂志上有介绍Top

5 楼conghui(万物苏醒)回复于 2004-09-01 09:26:06 得分 0

private   void   DataGrid1_ItemCreated(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)  
  {  
     ListItemType   elemType   =   e.Item.ItemType;    
     if   (elemType   ==   ListItemType.Pager)    
     {    
  if   (m_CreatePageTimes   ==   0)    
  {    
   TableCell   cellPerson   =   (TableCell)   e.Item.Controls[0];    
  cellPerson.Controls.Clear();  
  cellPerson.BackColor   =   Color.Navy;    
  cellPerson.ForeColor   =   Color.Yellow;    
  cellPerson.ColumnSpan   =   2;    
  cellPerson.HorizontalAlign   =   HorizontalAlign.Center;    
  cellPerson.Controls.Add(new   LiteralControl("个人信息"));    
       
  TableCell   cellJob   =   new   TableCell();  
  cellJob.BackColor   =   Color.Navy;    
  cellJob.ForeColor   =   Color.Yellow;    
  cellJob.ColumnSpan   =   2;    
  cellJob.HorizontalAlign   =   HorizontalAlign.Center;    
  cellJob.Controls.Add(new   LiteralControl("工作信息"));    
  e.Item.Controls.Add(cellJob);    
  m_CreatePageTimes     ++;    
  }  
  else   if(m_CreatePageTimes   ==1)  
  {  
  //   create   custom   pager   UI  
  }  
     }  
  }  
  这就是triout(笨牛)   所说的  
  1——  
  通过自定义列自定义列头,实现假的双行列标题  
  Top

6 楼vzxq(灵感人)回复于 2004-09-01 09:29:58 得分 0

studyTop

7 楼lufree(荆州城公子三求计,博望坡军师初用兵)回复于 2004-09-01 09:31:16 得分 0

upTop

8 楼amami(那那咪)回复于 2004-09-01 09:34:45 得分 0

markTop

9 楼lufree(荆州城公子三求计,博望坡军师初用兵)回复于 2004-09-02 01:37:14 得分 0

upTop

10 楼kld3000(Never Say Never)回复于 2004-09-02 07:28:23 得分 0

http://dev.csdn.net/develop/article/27/27465.shtm  
   
   
  这里说的比较详细了  
  不懂的话再问Top

相关问题

  • 运行时DataGrid中某列标题不能正常显示,求救!!
  • 请问怎么指定datagrid的行标题,不是列标题?
  • DataGrid控件的行标题和列标题怎么加
  • 如何设置DataGrid行标题?
  • 导入excel的标题行到datagrid
  • Datagrid的列可以设置标题,它的行是否也可设置标题?
  • 改Datagrid的标题!
  • listctrl能不能实现多行的标题栏?
  • 请问如何修改DataGrid的第一行标题。
  • 很easy的一个问题,关于datagrid标题行

关键词

  • datagrid
  • cell
  • cellperson
  • celljob
  • createpagetimes
  • tablecell
  • 标题行
  • horizontalalign
  • 实现
  • 方法

得分解答快速导航

  • 帖主:lufree
  • saucer

相关链接

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

广告也精彩

反馈

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