注册 登录
编程论坛 ASP.NET技术论坛

Label文本的长度大于表的宽度,想让大于的那部份用省略号代替,怎么办??

寒行 发布于 2008-07-25 09:06, 4621 次点击
我建了一个表,表宽固定,但只要Label文本的内容过长,它就会把表撑开.我想各位高手帮忙,能不能让多余的文本用省略号代替.......谢谢了
11 回复
#2
kevintang2008-07-25 09:20
substring(参数1,参数2) +"...";
#3
寒行2008-07-25 11:05
回复 2# kevintang 的帖子
不好意思,刚才没说清楚.我是用DataList然后到数据库取数据,你看以下面的代码:
   <table style="width: 470px; height: 170px">
                    <tr>
                        <td rowspan="2" style="width: 180px; height: 170px">
                        </td>
                        <td style="width: 290px; height: 25px; background-image: url(images/290.jpg);">
                            新闻资讯</td>
                    </tr>
                    <tr>
                        <td style="width: 290px; height: 145px; vertical-align: text-top;">
                            <asp:DataList ID="dlnews" runat="server">
                            <ItemTemplate>
                            <asp:Label ID="lblnews" runat="server" Text=""><a href="daohang.ascx?newsID=<%#Eval("newsID") %>"><%#Eval("newsname") %></a></asp:Label>
                            </ItemTemplate>
                            </asp:DataList>
                            </td>
                    </tr>
                </table>

代码页是:
  string sqlstr = Convert.ToString(ConfigurationManager.ConnectionStrings["sqlserver"]);
        SqlConnection conn = new SqlConnection(sqlstr);
        conn.Open();
        SqlDataAdapter da = new SqlDataAdapter("select * from news order by newstime desc",conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        dlnews.DataSource = ds;
        dlnews.DataBind();


因为表的宽度我想固定,而其中一条数据很长,所以不的不省略号.麻烦帮我看看,谢谢......
#4
贝蕾2008-07-25 15:14
我是基本上没有听懂你的意思,如果你不想用省略号,但是不想撑开的话,你可以固定lable的大小。
#5
寒行2008-07-26 14:16
回复 4# 贝蕾 的帖子
就比如有这么一段文字:"我是基本上没有听懂你的意思,如果你不想用省略号"
 但我希望得到的只是前面的几个显示方试,也就是:"我是基本上没有听懂你的意思,如果你..."
其他的内容我想等用户点进去再看具体内容.谢谢帮忙....
#6
2008-07-26 16:40
这属于表格没有限制宽度 你可以将表格的宽度限制下来 让他的内容多的时候可以自动换行 试试这个代码看看把
<td width="200" height="50" style="table-layout:fixed; WORD-WRAP:break-word; word-break:break-all">!</td>加在你的表格里试试
或者你写个字符串截取 也可以规定label里超过的字用点代替
#7
hebingbing2008-07-26 19:43
string a="我是基本上没有听懂你的意思,如果你不想用省略号";
stirng b=a.substring(0,17)+"……";
#8
yuzhou2008-07-27 21:02
在前台用>"<%#Eval("newsname")%> ,Eval()返回的有String类型重载,你可以用楼上的方法,逻辑判断后,可用Substring()
2.也可在后天些一个方法,例:
 string CutString(string source)
    {
        if (source.Length > 10)
        {
            source = source.Substring(0, 10) + "...";
        }
        return source;
    }
前台调用:<%# CutString(Eval("newsname"))%>
其实这两钟本质是一样的
#9
寒行2008-07-28 10:46
回复 8# yuzhou 的帖子
不好意思...昨天没上班,所以没看到.....我看了,感觉方法很不错,可是我是刚学的,代码看的懂,但是不知道要把代码加在我的代码中的哪个位置,能不能说清楚点,或者帮我加在上面的代码中?????
谢谢
#10
yms1232008-07-28 14:24
string sqlstr = Convert.ToString(ConfigurationManager.ConnectionStrings["sqlserver"]);
        SqlConnection conn = new SqlConnection(sqlstr);
        conn.Open();
        SqlDataAdapter da = new SqlDataAdapter("select * from news order by newstime desc",conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        foreach(DataRow dr in ds.Tables[0].Rows)
        {
                string temp=dr["newsname"].toString();
                if(temp.length>100)
                   temp=temp.substring(0,100)+"……";
                dr["newsname"]=temp;
        }
        dlnews.DataSource = ds;
        dlnews.DataBind();
在执行DataBind将数据绑定到DataList之前
#11
skyland842008-07-28 15:24
[bo][un]yuzhou[/un] 在 2008-7-27 21:02 的发言:[/bo]

在前台用>" ,Eval()返回的有String类型重载,你可以用楼上的方法,逻辑判断后,可用Substring()
2.也可在后天些一个方法,例:
 string CutString(string source)
    {
        if (source.Length > 10)
      ...

这个朋友的 用法是最好用得了。
#12
寒行2008-07-28 15:29
谢谢各位高手的指点,也谢谢斑竹...呵呵...不过我不知道怎么结帖,哪位高手再帮个忙下...告诉小弟..
1