如何让DataGrid下面的控件根据DataGrid的大小自动调整位置,谢谢:)100分求!

billchen 2003-07-26 01:06:24
在维护一些数据库表的时候,我用DataGrid来显示数据库中的表。
由于表中的某些字段长短不一,在DataGrid里面换行,造成DataGrid的整体高度变化很大。放在DataGrid下面的控件经常被DataGrid盖住。

请问有什么办法能够让DataGrid下面的控件根据DataGrid的高度自动调整位置,避免被DataGrid盖住,谢谢大家啦!(当然,我的页面是Grid Layout啦)

另外,如果想把DataGrid某些列中的内容截断(如果这些内容太长的话),有什么办法呢?我的DataGrid列是编成用BoundColumn动态加入的,多谢!
...全文
103 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
billchen 2003-07-27
  • 打赏
  • 举报
回复
非常感谢大家,给分了:)
chenee543216 2003-07-26
  • 打赏
  • 举报
回复
最简单的:
你把dataGrid和它下面的controls 都放到一个(或多个)panel 中试试
coolnick 2003-07-26
  • 打赏
  • 举报
回复
要防止DataGrid下面的控件被DataGrid控件覆盖,应该将页面中所有的控件用
相对坐标定位,一般用Table居中即可。还要把控件的绝对坐标删除掉,就是将
style="left:33;top:40;position:***..."全删除掉。
用函数left(myVar,8)来截取字符串myVar左边的8个字符,当然要这样的话,
DataGrid必须使用DataSet来绑定。
greystar 2003-07-26
  • 打赏
  • 举报
回复
用表格来实现,表格不要设高度第一行放grid第二行放你的其他控件,
只要不用绝对定位就可以了
zuyin 2003-07-26
  • 打赏
  • 举报
回复
如果你对grid的要求过多,不如用repeater
houjianxun 2003-07-26
  • 打赏
  • 举报
回复
方案B:把DataGrid某些列中的内容截断
在datagrid的ItemDataBound事件中操作

private void ID_Grid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
ListItemType itemType = e.Item.ItemType;
if (itemType == ListItemType.Item || itemType == ListItemType.AlternatingItem )
{
if(e.Item.Cells[1].Text.Length>1)//Cells[1]代表BoundColumn所在列的位置
{
e.Item.Cells[1].Text= e.Item.Cells[1].Text.Substring(0,1)+"...";
}

}
}
houjianxun 2003-07-26
  • 打赏
  • 举报
回复
方案A:利用<TD><DIV>避免被其他控年被DataGrid盖住

<table cellSpacing="0" cellPadding="0" height="100%" width="100%" border="0">
<tr>
<td valign="top">
<div id="filelist" style="BORDER-RIGHT: 1px ridge; BORDER-TOP: 1px ridge; OVERFLOW: scroll; BORDER-LEFT: 1px ridge; WIDTH: 100%; BORDER-BOTTOM: 1px ridge; HEIGHT: 100%; BACKGROUND-COLOR: white"><asp:datagrid id="ID_Grid" runat="server" BorderColor="#CCCCCC" BackColor="White" Width="100%">
<ItemStyle Wrap="False"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="Black" BackColor="#F0EEE2"></HeaderStyle> <Columns> <asp:HyperLinkColumn Target="_new" DataNavigateUrlField="ID" DataNavigateUrlFormatString="../../article/list.aspx?id={0}" DataTextField="Title" HeaderText="文章名">
<HeaderStyle Wrap="False" HorizontalAlign="Center" BorderWidth="1px"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="AddTime" HeaderText="加入时间">
<HeaderStyle Wrap="False" HorizontalAlign="Center" BorderWidth="1px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:datagrid></div>
</td>
</tr><tr>
<td bgcolor="#6a98e8" height="25">
把你的控件放到这里 </td>
</tr>
</table>
BenZ004 2003-07-26
  • 打赏
  • 举报
回复
恩,如楼上所说,现在做DataGrid一般都放在表的一个td里,其他控件放在其他的tr,td里。
另外,你要把内容截断的话,固定column的长度不就行了吗,呵呵。
然后你要显示里面的内容的话用datagrid里column的tooltip当鼠标移上去时就可以显示里面的内容了。
chnking 2003-07-26
  • 打赏
  • 举报
回复
将datagrid放在一个层里,放在htmlcontrol的grid layout panel中,将次grid layout panel的stlye中的布局--溢出--设为“需要是使用滚动条”。

这样这个datagrid就会被限制在这个grid layout panel中了,要是超出了grid layout panel的大小,会出现滚动条
billchen 2003-07-26
  • 打赏
  • 举报
回复
谢谢各位的回答:)

看了大家的解决方案,还是没有特别完美的。

首先,软件的页面很多,有几十个页面,如果用流水layout,光是摆那些控件就够麻烦的(我们做的是mis,对界面的要求不是特别精细,没有必要用作网页的方法用表格来规划布局)。

不知道在用grid layout的情况下有什么办法能使Datagrid下面的控件自动适应DataGrid的高度变化,再次感谢!

//bow
foronlyyou 2003-07-26
  • 打赏
  • 举报
回复
mark
树猫 2003-07-26
  • 打赏
  • 举报
回复
不要用 Grid Layout,用流水布局。DataGrid放在一个单元格里,DataGrid下面的控件放在下面的 tr 里。
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2003-07-26 01:06
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。