CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

用<%# DataBinder.Eval(Container.DataItem,"NewsID")%>显示数据的,如果标题太长了怎么规定字数,多余的用"..."代替

楼主myllop(大猪)2005-09-23 22:53:32 在 .NET技术 / ASP.NET 提问

用<%#   DataBinder.Eval(Container.DataItem,"NewsID")%>显示数据的,如果标题太长了怎么规定字数,多余的用"..."代替 问题点数:20、回复次数:38Top

1 楼breakerfish(泡泡鱼)回复于 2005-09-23 23:05:57 得分 5

呵呵,其实在控件里也可以绑定方法的.  
  如:  
  protected   string   yourstring   (newid)  
  {  
  string   s  
  if   (newid.Length>10)  
  {  
  ....      
  return   s  
  }  
  else{  
  .....  
  return   s  
  }  
  }  
  这样用:  
  <%#   yourstring   (DataBinder.Eval(Container.DataItem,"NewsID"))%>  
  也可以的~~,也就是先处理,后调用绑定Top

2 楼shadowno(龙门无影)回复于 2005-09-23 23:13:48 得分 5

方法1  
  <%#   DataBinder.Eval(Container.DataItem,"Title")   %>改成:<%#   DataBinder.Eval(Container.DataItem,"Title").ToString().Length>13?DataBinder.Eval(Container.DataItem,"Title").ToString().SubString(0,13):DataBinder.Eval(Container.DataItem,"Title").ToString()   %>  
   
  方法2  
  //在后写一个函数调用  
   
  public   string   ConvertSubString(string   strinput)  
  {  
      if(strinput.lenght>10)  
      {  
          return     strinput.substring(0,10)   +   "...";  
      }  
      else  
      {  
          return   strinput.tostring();  
      }  
  }  
   
  <%#   ConvertSubString(DataBinder.Eval(Container.DataItem,"StrName"))   %>>Top

3 楼myllop(大猪)回复于 2005-09-23 23:29:34 得分 0

不行的,在cs页面里加入后,编译的时候说:“protected   string   yourstring   (newid)”中应输入标识符Top

4 楼xiahouwen(武眉博<活靶子.NET>)回复于 2005-09-23 23:34:34 得分 0

protected   string   yourstring   (newid)  
  -->  
  protected   string   yourstring   (string   newid)Top

5 楼xiahouwen(武眉博<活靶子.NET>)回复于 2005-09-23 23:36:48 得分 0

其实根本用不着代码用样式表就搞定了  
  overflow:hidden;   text-overflow:ellipsis;white-space:nowrap;  
  演示  
  http://www.aspxboy.com  
  你看html代码内是全部的内容,但是在显示的时候如果到达容器边缘就自动出现"..."了Top

6 楼myllop(大猪)回复于 2005-09-23 23:36:53 得分 0

与“WebApplication1.NewsList.DisNewsTitle(string)”最匹配的重载方法具有一些无效参数  
  Top

7 楼gavinluo()回复于 2005-09-23 23:43:07 得分 0

如果要是vb的简单一点<%#   left(DataBinder.Eval(Container.DataItem,"NewsID"),10)%>...  
   
  c#需用通过tostring来实现Top

8 楼fordfamily(c#阁下)回复于 2005-09-23 23:52:40 得分 0

赞成css的做法Top

9 楼afdfgg(午夜飞行)回复于 2005-09-24 01:42:24 得分 5

text-overflow:ellipsis   这个属性只有IE6.0才支持吧,我的思路是在SQL语句里面先做判断  
  SELECT   (case    
  WHEN   LEN(NewsID)   >   10   then   LEFT(NewsID,8)   +   '...'  
  ELSE  
  NewsID  
  END  
  )   AS   NewsTitle  
  FROM   YourTable  
  输出直接用<%#   DataBinder.Eval(Container.DataItem,"NewsTitle")%>  
  以上代码在Sqlserver2000中测试通过Top

10 楼myllop(大猪)回复于 2005-09-24 22:54:04 得分 0

这两种方法都不行。  
   
  方法1  
  <%#   DataBinder.Eval(Container.DataItem,"Title")   %>改成:<%#   DataBinder.Eval(Container.DataItem,"Title").ToString().Length>13?DataBinder.Eval(Container.DataItem,"Title").ToString().SubString(0,13):DataBinder.Eval(Container.DataItem,"Title").ToString()   %>  
   
  方法2  
  //在后写一个函数调用  
   
  public   string   ConvertSubString(string   strinput)  
  {  
      if(strinput.lenght>10)  
      {  
          return     strinput.substring(0,10)   +   "...";  
      }  
      else  
      {  
          return   strinput.tostring();  
      }  
  }  
   
  <%#   ConvertSubString(DataBinder.Eval(Container.DataItem,"StrName"))   %>>  
   
   
  Top

11 楼zerocoin(木目木)回复于 2005-09-24 23:07:08 得分 0

我用的是"午夜飞行"的那类在数据库SQL语句上的处理,比较好理解也较为方便!Top

12 楼Student02370236(★★★★★★)回复于 2005-09-24 23:12:54 得分 0

前段时间我也提了一个相同的问题,不过在这里看到了更多的方法...Top

13 楼vivianfdlpw()回复于 2005-09-24 23:19:02 得分 0

SQL   or   CSSTop

14 楼mshuk(小麦哥)回复于 2005-09-24 23:45:34 得分 0

不错,学到了不少东西。Top

15 楼hoyanzi(hoyanzi)回复于 2005-09-24 23:51:40 得分 0

大猪哥哥的第一方法,我是经常用的!!!Top

16 楼ghd2004(JavaApi.cn)回复于 2005-09-25 00:25:41 得分 0

学习中  
  !Top

17 楼dragonforfly(飘零)回复于 2005-09-25 07:56:28 得分 0

后台添加一个方法,判断一下,然后返回要求的长度.Top

18 楼wula0010(wula0010)回复于 2005-09-25 09:56:23 得分 0

在ItemDataBound事件中:  
  if(e.Item.ItemIndex   !=-1)  
  {  
        if(e.Item.Cells[4].Text.ToSTring.length>30)  
        {  
              e.Item.Cells[4].Text=e.Item.Cells[4].Text.substring(0,30)+"...";  
        }  
  }Top

19 楼wangbiao(卡卡西)回复于 2005-09-25 10:14:12 得分 0

还是SQL的比较好用`  
  Top

20 楼grass00(grass)回复于 2005-09-25 10:15:34 得分 0

在sql语句中用left或substring函数  
  select   left("列明",你要的数字长度)   as     要绑定的列名   from     data  
  然后在前台绑定就ok     substring也是一样Top

21 楼tongwenhuan2003(蓝驿)回复于 2005-10-04 23:10:41 得分 0

哈哈,大家一起发言,学到不少哦Top

22 楼lovebanyi(风云)回复于 2005-10-05 07:40:04 得分 0

四种言法中还是样式表最爽了Top

23 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2005-10-05 07:43:47 得分 0

语法:    
     
  text-overflow   :   clip   |   ellipsis    
     
  参数:    
     
  clip   :    不显示省略标记(...),而是简单的裁切    
  ellipsis   :    当对象内文本溢出时显示省略标记(...)    
     
  说明:    
     
  设置或检索是否使用一个省略标记(...)标示对象内文本的溢出。    
  对应的脚本特性为textOverflow。请参阅我编写的其他书目。    
     
  示例:    
     
  div   {   text-overflow   :   clip;   }    
  Top

24 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2005-10-05 08:18:00 得分 0

CSS的方法在IE6.0是可以的  
  但是在FIREFOX下,没有   ...   的效果,直接切掉了,而且会出现切掉半个字的现象。Top

25 楼renyu732(Sysinfo)回复于 2005-10-05 09:26:02 得分 0

subString  
  left都可以的.Top

26 楼smin1994(smin1994)回复于 2005-10-07 10:09:58 得分 0

坐下了Top

27 楼jimu8130(火箭的未来在哪里?)回复于 2005-10-07 10:31:56 得分 0

sql语句的比较好Top

28 楼winstonczc(大航海时代)回复于 2005-10-07 12:13:06 得分 0

学到不少东西Top

29 楼grass00(grass)回复于 2005-11-23 11:18:08 得分 0

找了一个很简单的  
    (DataBinder.Eval(Container.DataItem,"MailSubject").ToString().Length>30)?DataBinder.Eval(Container.DataItem,"MailSubject").ToString().Substring(0,30)+"...":DataBinder.Eval(Container.DataItem,"MailSubject").ToString()  
   
  Top

30 楼ahui4367()回复于 2005-11-23 12:49:01 得分 0

假如数据库的内容果里面有html的代码呢,  
  如:  
  <table>  
  <tr>  
  <td>  
  这是要显示的内容,就是没有办法显示。  
  </td>  
  </tr>  
  </table>  
   
  如果我现在用了Substring来做,  
  如Substring(0,5);  
  我想要的效果是这样的。-------->   这是要显示...  
   
  但是结果是这样的。   -------->     <tabl...  
   
  有办法解决吗?谢谢了  
  Top

31 楼wuye(午夜循环(QQ:260968))回复于 2005-11-23 13:04:21 得分 0

用政则表达式吧显示的内容分类出来以后再substringTop

32 楼truelove12(结贴者寥寥无几,心寒ing...)回复于 2005-11-23 13:10:22 得分 0

vb.net  
   
  <%#   (DataBinder.Eval(Container.DataItem,"NewsID").substring(0,10)   &   "...")%>...Top

33 楼ahui4367()回复于 2005-11-23 13:12:56 得分 0

你看看,HTML那么多标记.用正则表达式太多了啊,不好弄的Top

34 楼jxufewbt(我的目标是5星)回复于 2005-11-23 13:26:52 得分 5

<%#   DataBinder.Eval(Container.DataItem,"demand").ToString().Length>15?DataBinder.Eval(Container.DataItem,"demand").ToString().Substring(0,15)   +   "...":DataBinder.Eval(Container.DataItem,"demand").ToString()%>  
  Top

35 楼ahui4367()回复于 2005-11-23 13:33:59 得分 0

jxufewbt(我的目标是5星)  
  你能帮我解决吗?就是含有HTML的截取字符串.Top

36 楼werther161(werther161)回复于 2005-11-23 13:35:35 得分 0

http://community.csdn.net/Expert/topic/4270/4270577.xml?temp=.1096002     看看这个已结的贴子,一样的问题哦Top

37 楼zhangjian01361(★非也非也★)回复于 2005-11-23 13:55:40 得分 0

我经常用wula0010(wula0010)   的这种方法.Top

38 楼ahui4367()回复于 2005-11-23 14:24:18 得分 0

终于弄成功了.  
  正则表达式的弄的.  
  public   string   StripTags(string   text)    
  {  
  text   =   Regex.Replace(text,   @"&nbsp;",   "",   RegexOptions.IgnoreCase);  
  text   =   Regex.Replace(text,   @"\r\n",   "",   RegexOptions.IgnoreCase);  
  return   Regex.Replace(text,   @"<.+?>",   "",   RegexOptions.Singleline);  
  }  
   
   
  tring   str   =   "<table>\r\n<tr>\r\n<td>\r\n这是要显示的内容,就是没有办法显示。\r\n</td>\r\n</tr>\r\n</table>";  
  然后调用StripTags("str").SubString(0,5)  
   
  就可以得到我要的效果了.Top

相关问题

  • eval()??
  • 请教<xsl:eval>
  • eval的用法
  • DataBinder问题
  • DataItem问题
  • 请教databinder问题!
  • 如何使用eval()?
  • 如何实现eval?
  • eval版本问题
  • 关于<%# DataBinder.Eval(Container, "DataItem.字段") %>

关键词

  • 语句
  • 函数
  • 代码
  • 效果
  • 内容
  • css
  • strinput
  • yourstring
  • dataitem
  • 方法

得分解答快速导航

  • 帖主:myllop
  • breakerfish
  • shadowno
  • afdfgg
  • jxufewbt

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo