Sun_china

交流更多,收获更多?

博客园 首页 新随笔 联系 订阅 管理

新闻标题不能太长了啊.
在ASP中可以用left(NewsTitle,11)
在.NET中怎么写啊?
请高手指点

 

前台代码
<%#DataBinder.Eval(Container.DataItem,"NewsTitle") %>
修改为
<%# myfunc(DataBinder.Eval(Container.DataItem,"NewsTitle")) %>
后台代码
protected string myfunc(object s)
  {
   return s.ToString().SubString(0,11);
  }
哈楼上的好象还得加个判断吧,判断它的长度是否长于11
public string myfunc(object s)
  {
   if(s.ToString().Length>11)
     {return s.ToString().SubString(0,11);}
    else
      {return s.ToString}
  }

 

用substring直接截了,有点粗鲁,不如在断开的地方加上 ...
方法如下
在后台代码里写这样一个方法
protected string cutstring(string inputstr,int len)
{
ASCIIEncoding asci=new ASCIIEncoding();
int strlen=0;
string str=null;
byte [] s=asci.GetBytes(inputstr);
for(int i=0;i<s.Length;i++)
{
if((int)s[i]==63)
{
strlen+=2;
}
else
{
strlen+=1;
}
try
{
str+=inputstr.Substring(i,1);
}
catch
{
break;
}
if(strlen>len)
break;
}
byte[] mybyte=Encoding.Default.GetBytes(inputstr);
if(mybyte.Length>len)
{
str+="…";
}
return str;
}
然后在datalist中写成如下的样子:
<%#  cutstring(DataBinder.Eval(Container.DataItem, "NewsTitle", "{0}"),20) %>

要是不想在后台定义函数也行,这样也可以:
<%# DataBinder.Eval(Container.DataItem,"NewsTitle").ToString().Length>10?DataBinder.Eval(Container.DataItem,"NewsTitle").ToString().Substring(0,10)+"...":DataBinder.Eval(Container.DataItem,"NewsTitle").ToString()%>

 

<%# (DataBinder.Eval(Container,"DataItem.NewsTitle")).ToString().Length >=11 ? (DataBinder.Eval(Container,"DataItem.NewsTitle")).ToString().PadRight(11).Substring(0,11) + "..." : (DataBinder.Eval(Container,"DataItem.NewsTitle")).ToString()%> 

posted on 2007-06-12 17:12  Sun_china  阅读(224)  评论(0编辑  收藏  举报