从数据库里取得的字符串,但这字符串太长了,显示到GridView里面就把单元格给称的很大。如何固定每个单元格,让它只显示固定长度的字符串?

解决方案 »

  1.   

    哦。忘了说明是ASP.NET里面的GridView
      

  2.   

    可以固定某列只显示固定长度的字符,多出的字符用...代替。
    using System;
    using System.Collections.Generic;
    using System.Text;namespace Component
    {        public static string GetStrlong(string str)
            {
                if (str.Length > 20)
                {
                    return str.Substring(0,20) + "…";
                }
                else
                {
                    return str;
                }
            }    }
    } <asp:GridView ID="GridView1" runat="server" Width="90%" 
                AutoGenerateColumns="False" CssClass="news_bordall" DataKeyNames="ID" 
                >
                <Columns>
                     <asp:TemplateField  HeaderText="解盘信息">                        
                              <ItemTemplate>
                               <%# Component.GetStr.GetStrlong(Eval("RequestInfo").ToString()) %>
                              </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
      

  3.   

    1,在html里 设置每个单元格的 宽度 (项目和head) 也可以用css
    2,设置超过部分 用来代替
    就这两个方法了吧。
      

  4.   

    我个人觉得把3楼的怎样改下好点
    就是把后面的那个20改成17   public static string GetStrlong(string str)
            {
                if (str.Length > 20)
                {
                    return str.Substring(0,17) + "…";
                }
                else
                {
                    return str;
                }
            }    }对于
    a20aaaaaaaaaaaaaaaaa
    b21bbbbbbbbbbbbbbbbbb
    c22ccccccccccccccccccc
    d23dddddddddddddddddddd
    原代码做的效果是这样:
    a20aaaaaaaaaaaaaaaaa
    b21bbbbbbbbbbbbbbbbb...
    c22ccccccccccccccccc...
    d23ddddddddddddddddd...
    我改过的代码做出来的效果是:
    a20aaaaaaaaaaaaaaaaa
    b21bbbbbbbbbbbbbb...
    c22cccccccccccccc...
    d23dddddddddddddd...
    哪个更好我也说不清楚
    反正我做的系统我是用的我这方法
    不会超过单元格
      

  5.   

    3楼基本可以,我也遇到过这个问题,我觉得还可以加tooltip
    把看不到的提示出来
      

  6.   


    protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string strName = e.Row.Cells[1].Text;//
                if (strName.Length > 10)//判断它的长度,如果大于10就截取字符串
                {
                    e.Row.Cells[1].Text = strName.Substring(0, 10) + "...";
                    e.Row.Cells[1].ToolTip = strName;//ToolTip是鼠标指向的效果。
                }
            }     }看能不能帮上忙
      

  7.   

    去截串没必要。
    我的方法:
    1.DataGrid 每列都定好大小 例如:30%。
    2.DataGrid每列不换行 
    3.用样式设置显示不下的为....
    代码如下:我只举一列
    <asp:BoundColumn DataField="OperationDesc" HeaderText="备注">
    <HeaderStyle Width="10%"></HeaderStyle>
    <ItemStyle Wrap="False"  CssClass="showFlowOver"></ItemStyle>
    </asp:BoundColumn>样式:showFlowOver为:
    .showFlowOver {
       overflow:hidden;
       text-overflow:ellipsis;
    }
      

  8.   

    用模板来做,编辑gridview添加模板,在模板里放textbox控件,将此控件设为多行的,这样就只固定了,试试,应该可以。