我的网页要读取数据库表的信息,绑定了GridView控件,我想把“About”,也就是“点卡简介”这列的字符只显示20个,怎么截取?下面是代码,我用了母版页的:
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div>
    <center>
    <br />
    <br />
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
            DataSourceID="ObjectDataSource1" Height="255px" Width="659px" PageSize="5">
            <Columns>
                <asp:BoundField DataField="CardId" HeaderText="游戏编号" SortExpression="CardId" />
                <asp:BoundField DataField="CardPath" HeaderText="图片路径" SortExpression="CardPath" />
                <asp:BoundField DataField="Title" HeaderText="点卡名称" SortExpression="Title" />
                <asp:BoundField DataField="About" HeaderText="点卡简介" SortExpression="About" />
            </Columns>
        </asp:GridView>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllCardInfo"
            TypeName="GraduationProject.BLL.CardInfoManager"></asp:ObjectDataSource>
        &nbsp; &nbsp;
        &nbsp;</center>
    </div>
</asp:Content>

解决方案 »

  1.   

    用了下面的这个方法,但是根本就不能截取字符串!<%# CutString(Convert.ToString(Eval("About")), 20)%>      /// <summary>
         /// 截取字符串方法
         /// </summary>
        /// <param name="strContent"></param>
        /// <param name="sLen"></param>
       /// <returns></returns>public static string CutString(string strContent, int sLen)
        {
            //超过规定长度加上“…”        byte[] s1 = System.Text.Encoding.Default.GetBytes(strContent);
            int tLen = sLen + 2; //规定长度加上“…”的总长度
            //若转换为字节的字符串的长度小于指定的长度加上“...”的总长度则执行
            if (s1.Length <= tLen)
            {
                return strContent;
            }
            else
            {
                strContent = System.Text.Encoding.Default.GetString(s1, 0, sLen) + "…"; ;
                return strContent;
            }
        }
      

  2.   

    我以前也用楼上的方法,而且自己的类库里一直都有,前两天我看了个更牛的办法,觉得不错,分享一下<HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <style type="text/css">
    .aa{
    display:   block; 
    width:   200px; 
    overflow:   hidden; 
    white-space:   nowrap; 
    -o-text-overflow:   ellipsis; 
    text-overflow:   ellipsis; 
    }
    </style>
    </HEAD>
    <BODY>
    <div class="aa">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>
    </BODY>
    </HTML>
      

  3.   

    如果没效果,可以调整下width或者aaa的长度
      

  4.   

    DataBound事件:
    e.Row.Cells[3].Text.ToolTip = e.Row.Cells[3].Text;
    if(int.Parse(e.Row.Cells[3].Text)>20)
     e.Row.Cells[3].Text = e.Row.Cells[3].Text.SubString(0,20);
      

  5.   

    把<asp:BoundField DataField="About" HeaderText="点卡简介" SortExpression="About" /> 改成:                <asp:TemplateField>
                        <ItemTemplate>
                            <%# Eval("About").ToString().SubString(0,20) + "…" %>
                        </ItemTemplate>
                    </asp:TemplateField>
      

  6.   

    写错了
    if(e.Row.Cells[3].Text.Length>20)
      

  7.   

    我用这个方法为什么第二次我改那个20为25就出现了length的错误了呢?调试就出错了·
      

  8.   

    <asp:TemplateField>
                        <ItemTemplate>
                            <%# Eval("About").ToString().SubString(0,20) + "…" %>
                        </ItemTemplate>
    </asp:TemplateField> 
      

  9.   

    39364250--Asp.net(C#)高手交流群(高级群-可加200人),欢迎高手加盟交流! asp.net 开源交流 设计模式 n层架构 技术创业 外包合作 另招数名高手作管理员
      

  10.   

    因为这个方法得保证你取出来的字符串长度要大于等于25啊,你可以先这么判断一下:                <asp:TemplateField>
                        <ItemTemplate>
                            <%# (Eval("About").ToString().Length>25?Eval("About").ToString().SubString(0,25):Eval("About").ToString()) + "…" %>
                        </ItemTemplate>
                    </asp:TemplateField>
      

  11.   

    这看你是怎么绑定的。如果Select里检索出来放入DataTable里,那么简单的做法就是在放进去的时候做个循环。
    for each dr as datarow in DataTable1.rows
    用SubString方法取20位再放进DataTable1里
    next
    然后DataTable绑定到GridView这是不修改前台代码的做法。修改前台代码可以考虑用Templatefield
      

  12.   


    也可以直接bind完了后替换...
      

  13.   

    没有听说  ToString()  后面还可以跟Substring()的是不是那为大哥写错了啊!!!