我现在想在DATALIST中,集中显示一些新闻标题( 新闻标题 这个数据字段 就作为需要帮定显示内容) 然而新闻标题可能比较长, 现在我想规定这些标题的显示长度,假设规定的最大长度为5,那么标题长度小于5就正常显示:标题大于5就截断显示,比如一个标题原来是:“周渝民车速惊人外号车神 车祸牵出四角恋(组图)”
现在在这个DATALIST中显示为:“周渝民车速…”我现在的做法是写一个函数,把原来标题传进来,里面截断一下,然后返回截断的结果,类似代码为:<%# GetPartOfString( (string)((DataRowView)Container.DataItem)["subject"] %>当然这么做是没问题的,我现在就是想知道有没有更好的做法。我总怀疑这个做法不是最合适,所以想请问一下有经验人士有什么建议。 数据源是一个 DataSet.实际上就是 ds.TAbles[0]. 我是在想:能不能把想要的结果直接就在 DataTable 里面就给处理了,这样帮定时直接绑顶一下这个 DataTable 就可以了,页面不必写成那样的函数了
现在在这个DATALIST中显示为:“周渝民车速…”我现在的做法是写一个函数,把原来标题传进来,里面截断一下,然后返回截断的结果,类似代码为:<%# GetPartOfString( (string)((DataRowView)Container.DataItem)["subject"] %>当然这么做是没问题的,我现在就是想知道有没有更好的做法。我总怀疑这个做法不是最合适,所以想请问一下有经验人士有什么建议。 数据源是一个 DataSet.实际上就是 ds.TAbles[0]. 我是在想:能不能把想要的结果直接就在 DataTable 里面就给处理了,这样帮定时直接绑顶一下这个 DataTable 就可以了,页面不必写成那样的函数了
比如:
select (when case len(title)>5 then substring(title,0,5)+'...' else title end ) as title from news
这样的方法也没有什么问题,楼主多滤了
那可以用sql语句来实现
如果不是,你这个实现算不错的
不过你如果你的字符长度不够5会出错的。
你可以在.cs中写啊,判断一下长度再Substring就行了。<%# Left(DataBinder.Eval(Container.DataItem, "title"),5)%>
{
return
s.Length > len?
(new StringBuilder(s)).ToString( 0 , len ):
s;
}呵呵 我怎么会没想到 Substring 呢? 还用了一个 stringbuilder 是不是有点画蛇添足