• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

有关DataGrid的格式控制问题,请指教

paddy102 2004-10-29 12:26:29
我在做报表时(格式比较复杂),遇到控制DataGrid中各单元格(列宽)的问题,就是程序执行时DataGrid中各列的宽度好像是随机产生的。实际上有很多列涉及的数据类型是一致的。

问题好像出在DataGrid的ShowHeader属性被我设为了False,而之前用ShowHeader时可以限定列宽(根据header的长度)。

我想问的是如果不用ShowHeader属性,该怎样来控制列宽(主要因为我的报表里头存在很多列名称一致的项)。

比如报表中会出现: 本月 | 累计 | 本月 | 累计 | 本月 | 累计 .....(这是Header栏)
...全文
107 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
paddy102 2004-10-30
谢谢 Uncommon(土匪) 提供的资料,真的很丰富
谢谢 goody9807()
回复
paddy102 2004-10-30
to luluso(相约中国大陆最南端-湛江是我家、爱护靠大家):

我碰到的不是这个情况,不过还是谢谢你!
回复
paddy102 2004-10-30
我碰到的可能是 xiaomaoy(小红茂) 说的情况,也不好在绑定中控制,因为我碰到的报表中每一行才是一个字段,而且其中还有些项需要在程序中计算。
回复
luluso 2004-10-29

<table id="table1" style="WORD-BREAK: break-all; work-wrap: break-word" cellSpacing="0" cellPadding="5" runat="server">
<tr><td width=20></td><td width=30></td></tr>
<tr><td>...</td><td></td></tr>
</table>
回复
luluso 2004-10-29
width=?? 直接控制表格宽度.
回复
goody9807 2004-10-29
如果设置了列宽度 有些情况会不起作用

例如 你输入了 sssssssssssssssssss 这么多 字符 但是 你设置列宽度 很小 如4px

那么当然会被撑开 除非你强制换行
<table id="table1" style="WORD-BREAK: break-all; work-wrap: break-word" cellSpacing="0" cellPadding="5" runat="server">
<tr><td width=20></td><td width=30></td></tr>
<tr><td>...</td><td></td></tr>
</table>
回复
xiaomaoy 2004-10-29
无法控件DataGrid的宽度,就算你把Width设了具体的值也没用。因为DataGrid列的列的宽度会随着单元格里的数据的长度而自动改变。

楼主可以考虑使用模板列,这样在模板列中设置控件的宽度就可以了
回复
goody9807 2004-10-29

2、设置绑定列或者自动生成列的编辑框宽度
请在你的ItemDataBound事件中加入一下代码:
if (e.Item.ItemType == ListItemType.EditItem)
{
for (int i = 0; i < e.Item.Cells.Count; i++)
{
TextBox txt = (TextBox)e.Item.Cells[i].Controls[0];
txt.Width = Unit.Pixel(50);
}
}


DataGrid如何动态设置列宽,分别包括数据绑定和动态生成列两种情况的列宽设置?

win form:
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.MappingName = "News";
dGridNews.TableStyles.Add(dgts);
DataGridTableStyle tableStyle = dGridNews.TableStyles["News"];
tableStyle.GridColumnStyles[1].Width =300;

web form:
width = 25%


7.DataGrid需要动态帮定不同的列,如何控制他的列宽?

----if(e.Item.ItemType==ListItemType.Header)
for(int i=0,j=e.Item.Cells.Count;i<j;i++){
e.Item.Cells[i].Width=System.Web.UI.WebControls.Unit.Pixel(20);
}

--- DataGrid1.Columns(9).HeaderStyle.Width = Unit.Pixel(100)
回复
Dluxd 2004-10-29
属性编辑器
回复
Uncommon 2004-10-29
DataGrid真的是很强大……
http://www.donews.net/blueoxygen/archive/2004/04/17/12864.aspx
回复
skyeenet 2004-10-29
Dategride 有属性编辑器 你用邦定列 就可以了
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-10-29 12:26
社区公告
暂无公告