当前位置:编程学习 > C#/ASP.NET >>

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

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文件是多个文件共用的不能修改,我这问题应该如何解决。 --------------------编程问答-------------------- --------------------编程问答-------------------- 你要让它全部显示干什么啊,你可以把内容多的通过tip来显示啊,显示的时候就显示前几个字符,不就不会变化列的宽度了吗 --------------------编程问答-------------------- 回楼上,显示不显示不是我说了算啊,头顶上还有老板、还有客户呢。。。 --------------------编程问答-------------------- 我把自己的点点经验和楼主分享下:
如果Gridview的Width不确定,你用百分比来分配列的宽度一般都不起作用。

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

以上纯粹个人经验,不一定正确,楼主可参考。 --------------------编程问答-------------------- 谢谢楼上

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

我感觉应该是后台加属性加的不太合适,请问具体我应该加什么语句?
刚接触asp没多久不太熟,见谅。 --------------------编程问答--------------------
楼主可以试试:
1、给Gridview赋一个固定大小。
2、设置每列的宽度。 --------------------编程问答-------------------- 不好意思,昨天下班了没再过来看

我今天试了下,不在后台给GridView添加那属性的话,即使我设置了总width以及各列的width还是不起任何作用,仍然会被拉得很宽。 --------------------编程问答-------------------- 你设Gridview的width值,应是每一列的宽度之和.
另外,确保GridView的RowStyle项里的Wrap属性设为True,让列的内容超宽时自动换行. --------------------编程问答-------------------- 我就是这么做的。。 --------------------编程问答-------------------- Table的那个就暂时设定css文件解决了
GridView的问题用 ydsunny(小强) 说的办法还是不行。。 --------------------编程问答-------------------- 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 --------------------编程问答-------------------- 回楼上,不能直接在GridView中指定宽度么?都是后台限定字符长度太不方便了。。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,