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

请问如何在DataGrid控件中显示表格时,如何让每列的宽度固定

楼主liuyactive()2006-03-01 18:09:19 在 .NET技术 / ASP.NET 提问

我用checkbox选择我要显示的各列,用DataGrid控件显示时,在列数比较多时,很多列就挤在一起,宽度不能固定,请问如何将DataGrid表格的宽度以固定宽度显示 问题点数:20、回复次数:16Top

1 楼zuoxxx(♂动感超哥♂)回复于 2006-03-01 18:24:27 得分 0

不设定DataGrid的宽度,让它根据列数自动伸缩就可以了吧Top

2 楼liuyactive()回复于 2006-03-01 20:30:07 得分 0

可是当我要显示的列很多的时候,它们都挤在一起,列名都不能正常显示,本来在一行里显示的列名变成竖着显示了,给人很不好的感觉Top

3 楼astra1(Hyperion)回复于 2006-03-01 23:25:36 得分 0

如果不是自动生成的列,可以在属性生成器的格式-列-列名   中设置宽度  
   
  如果是自动生成的列,可以实现ItemCreated行为的handle  
  例:  
  private   void   DataGrid1_ItemCreated(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)  
  {  
  if(e.Item.ItemType==ListItemType.Header)//如果是第一行TR  
  {  
  ((TableCellCollection)e.Item.Cells)[0].Width=200;//第一列宽度设200  
  ((TableCellCollection)e.Item.Cells)[2].Width=200;//第三列宽度设200  
  }  
  }Top

4 楼astra1(Hyperion)回复于 2006-03-01 23:29:15 得分 0

ItemCreated是DataGrid中的一种事件,在Grid生成Table的各种行(即TR)时触发Top

5 楼liuyactive()回复于 2006-03-02 15:46:59 得分 0

用((TableCellCollection)e.Item.Cells)[0].Width=200;   语句设置每列的宽度,岂不是把要显示的列数固定了,我要显示的列是动态的,有时可能是5列,有时可能是12列,根据选择而变化的。     当我选择的列不到我规定的列时,程序出现错误哦Top

6 楼astra1(Hyperion)回复于 2006-03-02 16:09:31 得分 0

以上只是提供一种方法,在你说的这种情景的话  
   
  你也可以遍历(TableCellCollection)e.Item.Cells)这个数组,因为他是页眉,也就是表格的第一行,这些元素的.Text属性也就是你的列名,你可以根据列名来赋不同的宽度  
   
  类似  
  if(e.Item.ItemType==ListItemType.Header)//如果是第一行TR  
  {  
  TableCellCollection   tr=(TableCellCollection)e.Item.Cells;  
  for(int   i=0;i<tr.Count;i++)//遍历所有列  
  switch(tr[i].Text)  
  {  
  case   "VodTypeId"://判断列名  
  tr[i].Width=200;  
  break;  
  case   "ParentTypeId":  
  tr[i].Width=120;  
  break;  
  }  
  }Top

7 楼liuyactive()回复于 2006-03-03 16:42:40 得分 0

我试了,还是有问题啊,是不是除了编写DataGrid1_ItemCreated事件,还有别的地方需要设置呢,真是烦人啊,我是一个菜鸟,请多多指教啊Top

8 楼hbzy123(DemoHunter)回复于 2006-03-03 16:55:23 得分 0

<asp:DataGrid   id="DataGrid1"   runat="server"   AutoGenerateColumns="False"   Width="100%"   style="LINE-HEIGHT:180%">Top

9 楼hbzy123(DemoHunter)回复于 2006-03-03 16:56:10 得分 0

也可以是:style="LINE-HEIGHT:28"Top

10 楼hbzy123(DemoHunter)回复于 2006-03-03 17:00:38 得分 0

不需要DataGrid1_ItemCreatedTop

11 楼sWinZ(死蚊子)回复于 2006-03-03 17:25:03 得分 0

不知道楼主说的让列宽度固定 是在设计时还是在运行时Top

12 楼liuyactive()回复于 2006-03-03 22:14:19 得分 0

我要产生的列是要   AutoGenerateColumns="true"的,因为事先不知道要显示多少列,要根据客户选择的项数而定  
  列宽度固定应该是运行时了Top

13 楼astra1(Hyperion)回复于 2006-03-04 00:58:13 得分 0

不知道你还碰到什么问题,刚才实现了一个简单例子  
   
  http://211.152.33.150/HyperionBlog/GridColumnWidth.aspx  
   
  不知道是否就是你说的意思,源码给你参考下  
  http://211.152.33.150/HyperionBlog/Addon/csdn/test.rarTop

14 楼gsk99(ZJUT)回复于 2006-03-04 10:46:17 得分 0

如果你的DataGrid生成是由绑定列生成的,那么可以在DataGrid的属性生成器里面设置,很方便,在里面好好找好吧Top

15 楼mlnancy(泡泡)回复于 2006-03-04 11:28:22 得分 0

MARK一下,方便学习Top

16 楼lizi02(冬虫夏草)回复于 2006-03-04 12:19:08 得分 0

datagrid有width属性啊  
  我遇到你那样得情况我是要么把列数精简一下,要么在后台写个方法,在前台调用,这个方法得目的就是把一个列显示得个数控制,比如说这一列所有得单元格每个只显示4个汉字    
  这样效果很好得Top

相关问题

  • 找表格控件
  • 表格控件 come in!
  • 请问如何固定DataGrid控件的宽度?
  • 动态的控制Datagrid控件列的宽度???
  • 请问在AxMSFlexGrid控件中表格的宽度是什么单位,急!!!找到答案马上揭帖
  • 怎么设置DataGrid表格字段动态绑定Adodc控件?
  • 如何在DataGrid(Windows Form)的表格中加入ComboBox控件
  • 如何在DataGrid(Windows Form)的表格中加入MonthCalendar控件
  • C#中的dataGrid控件怎样用代码改变某一列的宽度
  • 表格打印宽度?

关键词

  • 表格
  • datagrid
  • 属性
  • 选择
  • 宽度
  • tablecellcollection
  • 显示
  • 列数
  • 固定
  • 生成

得分解答快速导航

  • 帖主:liuyactive

相关链接

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

广告也精彩

反馈

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