两个关于宽度的问题(GridView列宽及Table中文本框)

fenk__ 2007-04-05 02:41:30
1、GridView中列宽、换行的问题一搜就n多,很多问题也都和我的一样,都是想要锁定一列的宽度使之不会因为内容字符过多而变宽影响浏览,但我这里还是不能锁定宽度使内容自动换行(确切的说是内容过长的这列不自动换行,其他列都被“挤”得都竖排了。。。)
我用的代码如下:
<asp:Content ID="ContentWorkers" ContentPlaceHolderID="ContentPlaceHolderContent" runat="Server">
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" >
<Columns>
<asp:BoundField DataField="ADDRESS" HeaderText="地址" >
<ItemStyle Width="5%" Wrap=true />
</asp:BoundField>
</Columns>
</asp:GridView>
 
</asp:Content>
在字符过宽的情况下,我尝试过设定GridView的Width属性,没起任何作用。
看到过有些帖子说要用Template,我也没成功。
求解。。
ps.不用databound

2、Table中有两个文本框用来显示/修改数据库中相应字段内容,代码如下:
<table style="text-align: left; position: relative; " rules="groups" width="600">
<td style="width: 50%">
<asp:TextBox ID="NAME" runat="server" CssClass="TextArea" TextMode="MultiLine" ></asp:TextBox></td>
<td style="width: 50%">
<asp:TextBox ID="ADDRESS" runat="server" CssClass="TextArea" TextMode="MultiLine" ></asp:TextBox></td>
对应的CssClass:
.TextArea
{
font-weight: lighter;
font-size: 12px;
color: black;
width: 50%;
height: 50px;
font-style: italic;
font-family: 宋体;
border-style:groove;
}
当NAME及ADDRESS内容过长时,这里虽然也会转行,但还是会把TextBox及整个Table的宽度拉大很多。
如果把CssClass中的width改成300px(Table宽度的一半),长内容显示就一切OK的。
这里我想问下,CssClass中width的这个50%是对应什么的比例。另外,因为我的Css文件是多个文件共用的不能修改,我这问题应该如何解决。
...全文
1383 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fenk__ 2007-04-10
  • 打赏
  • 举报
回复
回楼上,不能直接在GridView中指定宽度么?都是后台限定字符长度太不方便了。。。
chenou851123 2007-04-10
  • 打赏
  • 举报
回复
protected String FormatArt(string TString)
{
if (TString != null)
{
TString = TString.Replace("\r", "<br/>");
TString = TString.Replace(" ", " ");
return TString;
}
else
{
return TString = "无内容";
}
}

//固定字符串后换行
protected string SetString(string str)
{
StringBuilder sb = new StringBuilder(str);
for (int i = 0; i <= sb.Length; i++)
{
//注意这里是使用的 "==" 如果使用 "=" 会报错的
//这里实现的时候65个字符一换行
if (i % 66 == 0)
{
sb.Insert(i, "\r");
}

}
return FormatArt(sb.ToString());
}

我也是和你一样的 我今天刚解决

http://community.csdn.net/Expert/topic/5454/5454211.xml?temp=.5823786
fenk__ 2007-04-10
  • 打赏
  • 举报
回复
Table的那个就暂时设定css文件解决了
GridView的问题用 ydsunny(小强) 说的办法还是不行。。
九章落地 2007-04-06
  • 打赏
  • 举报
回复
你设Gridview的width值,应是每一列的宽度之和.
另外,确保GridView的RowStyle项里的Wrap属性设为True,让列的内容超宽时自动换行.
fenk__ 2007-04-06
  • 打赏
  • 举报
回复
不好意思,昨天下班了没再过来看

我今天试了下,不在后台给GridView添加那属性的话,即使我设置了总width以及各列的width还是不起任何作用,仍然会被拉得很宽。
fenk__ 2007-04-06
  • 打赏
  • 举报
回复
我就是这么做的。。
九章落地 2007-04-05
  • 打赏
  • 举报
回复

楼主可以试试:
1、给Gridview赋一个固定大小。
2、设置每列的宽度。
fenk__ 2007-04-05
  • 打赏
  • 举报
回复
谢谢楼上

我按你的做法固定GridView的width,又在后台加了那行语句后后,整个Gridview的宽度确实固定了下来,但所有列宽都锁定了,我单独设置也不起作用。而且长内容的那列没有实现自动换行,而是只显示了前n个字符。。

我感觉应该是后台加属性加的不太合适,请问具体我应该加什么语句?
刚接触asp没多久不太熟,见谅。
九章落地 2007-04-05
  • 打赏
  • 举报
回复
我把自己的点点经验和楼主分享下:
如果Gridview的Width不确定,你用百分比来分配列的宽度一般都不起作用。

如果要确定列宽,要做的工作一般有:
1、给Gridview赋一个固定大小。
2、在后台给Gridview添加一个属性,限制列宽,如GridView1.Attributes.Add("style", "table-layout:fixed");
3、设置每列的宽度。

以上纯粹个人经验,不一定正确,楼主可参考。
fenk__ 2007-04-05
  • 打赏
  • 举报
回复
回楼上,显示不显示不是我说了算啊,头顶上还有老板、还有客户呢。。。
修哲 2007-04-05
  • 打赏
  • 举报
回复
你要让它全部显示干什么啊,你可以把内容多的通过tip来显示啊,显示的时候就显示前几个字符,不就不会变化列的宽度了吗

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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

试试用AI创作助手写篇文章吧