我现在想在DATALIST中,集中显示一些新闻标题( 新闻标题 这个数据字段 就作为需要帮定显示内容) 然而新闻标题可能比较长, 现在我想规定这些标题的显示长度,假设规定的最大长度为5,那么标题长度小于5就正常显示:标题大于5就截断显示,比如一个标题原来是:“周渝民车速惊人外号车神 车祸牵出四角恋(组图)”
现在在这个DATALIST中显示为:“周渝民车速…”我现在的做法是写一个函数,把原来标题传进来,里面截断一下,然后返回截断的结果,类似代码为:<%# GetPartOfString( (string)((DataRowView)Container.DataItem)["subject"] %>当然这么做是没问题的,我现在就是想知道有没有更好的做法。我总怀疑这个做法不是最合适,所以想请问一下有经验人士有什么建议。 数据源是一个 DataSet.实际上就是 ds.TAbles[0]. 我是在想:能不能把想要的结果直接就在 DataTable 里面就给处理了,这样帮定时直接绑顶一下这个 DataTable 就可以了,页面不必写成那样的函数了

解决方案 »

  1.   

    可以在查詢語句里寫呀
    比如:
    select (when case len(title)>5 then substring(title,0,5)+'...' else title end ) as title from news
      

  2.   

    其他方法可以参考楼上的,但是<%# GetPartOfString( (string)((DataRowView)Container.DataItem)["subject"] %>
    这样的方法也没有什么问题,楼主多滤了
      

  3.   

    那些新闻是存在数据库里的?
    那可以用sql语句来实现
    如果不是,你这个实现算不错的
      

  4.   

    以下二种方式更好一些.<%# DataBinder.Eval(Container.DataItem, "title").ToString().Substring(0,5)%>
    不过你如果你的字符长度不够5会出错的。
    你可以在.cs中写啊,判断一下长度再Substring就行了。<%# Left(DataBinder.Eval(Container.DataItem, "title"),5)%>
      

  5.   

    public static string GetPartOfString( string s , int len)
    {

    return
    s.Length > len?
    (new StringBuilder(s)).ToString( 0 , len ):
    s;
    }呵呵  我怎么会没想到 Substring 呢?  还用了一个 stringbuilder  是不是有点画蛇添足