<asp:Repeater runat="server" ID="Repeater3">
<ItemTemplate>
<ul>
<li><p class="class"><font color="#7f7979">【目标考核】</font><a href="#"> <%#Eval("tlName")%> </p></a>
<span class="float"> <%#Eval("releasetime", "{0:yyyy年MM月dd日}")%></span>
</ItemTemplate>
</asp:Repeater>
我绑定的是标题,如果标题太长了我想截取前五位字符,后面多余的用“...”代替,请问怎么做!大神们帮个忙咯!谢谢!如果可以 思路代码一起给更好,谢谢!!
一个方法即可,string GetShowText(string text){if(text.Length>8)return text.SubString(0,5)+"...";else return text}。然后前台调用即可。
public void GettlName1()
{
this.Repeater1.DataSource = ti.GettlName1();
this.Repeater1.DataBind();
}
这是我的后台,用不了你说的,我之前也想过在sql那里直接截取,但是还是做不来,有更好的办法吗?谢谢!
@梦魔问世: 你的后台数据源和我提供的方法又不冲突,完全可以用嘛。你只需要将红色代码修改为<%#GetShowText(Eval("tlName").ToString())%>即可。
@幻天芒: 谢谢!你的方法很好!
Eval("tlName").Lenght>5?Eval("tlName")+"...":Eval("tlName")
tlName 传出来是是字符串,而且还是object类型,用不了Lenght,我试图把传出来是数字转为int类型,但是均以失败!不知道你是否还有更好的做法?
@梦魔问世:
可以将 obejct.ToString().Length ,将Object 转换为 字符串,然后就可以用length属性了。
代码如下:
/// <summary>
///
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static string gettext(object o)
{
string text = o.ToString().Trim();
if (text.Length > 5)
{
text = text.Substring(0, 5) + "....";
}
return text;
}
绑定代码改动如下:
<%#gettext(Eval("tlName"))%>
@幻天芒: 谢谢!你的方法很好!
<%#Eval("tlName")%>是不是可以直接截取啊?<%#Eval("tlName").tostring().substring(0,5)%>
@幻天芒: 谢谢!你的方法很好!
<li><p class="class"><font color="#7f7979">【目标考核】</font><a href="#">
<%#FixLengthString(Eval("tlName")%ToString(),16, "...")%></p></a>
public static string FixLengthString(string Text, int length, string str)
{
string retStr = Text.Length > length ? Text.Substring(0, length) + str : Text;
return retStr;
}
@幻天芒: 谢谢!你的方法很好!