datalist模板列中控制字符显示的长度

guopeng_028 2006-01-11 11:31:17
这问题可能是老问题了,刚才在网上找了一个多小时
也没有找到合适的解决办法,大部分都是在一个页面里控制
放到datalist里还真没有试过

实在没有办法,才到这里向大家求解
请各位高手帮帮忙

一个datalist 在模板列里放入HyperLink,用来显示新闻的标题
就是想让标题显示20个字,以后的字符就不显示了,
HyperLink的Text绑定到ds.Table["news"]的title字段

怎么能够实现,数据绑定还用不用换,
...全文
280 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveMango 2006-01-23
  • 打赏
  • 举报
回复
mark
gb_boy 2006-01-12
  • 打赏
  • 举报
回复
感谢楼主,俺也正想问这个问题。
总算知道怎么在页面绑上数据了
guopeng_028 2006-01-11
  • 打赏
  • 举报
回复
public static string stringformat(string str,int n)
{
///
///格式化字符串长度,超出部分显示省略号,区分汉字跟字母。汉字2个字节,字母数字一个字节
///
string temp=string.Empty;
if(System.Text.Encoding.Default.GetByteCount(str)<=n)//如果长度比需要的长度n小,返回原字符串
{
return str;
}
else
{
int t=0;
char[] q=str.ToCharArray();
for(int i=0;i<q.Length&&t<n;i++)
{
if((int)q[i]>=0x4E00 && (int)q[i]<=0x9FA5)//是否汉字
{
temp+=q[i];
t+=2;
}
else
{
temp+=q[i];
t++;
}
}
return (temp+"...");
}

}

这个是我找的一段代码,写的还是不错

不过我试过上面的方法,

与datalist里面的标签绑定的时候总是不能显出数据



getleft(<%# DataBinder.Eval(Container.DataItem,"SMT_cpname")%>,20)
这种方法绑定,结果如下
getleft(,20) 2004-10-15 0:00:00


<%#Myleft(DataBinder.Eval(Container, "DataItem.Content"),150)%>
这种绑定的话
提示myleft有一个无效的参数,是不是把Container,的,也认为是参数了
guopeng_028 2006-01-11
  • 打赏
  • 举报
回复
如果用SQL语句的话那太麻烦了
要修改的话也麻烦一些,
虽然不算 什么复杂查询,但是用在dataset里面就有些不合适了
查询起来有些费力,还是用程序控制一下容易一些
peterb 2006-01-11
  • 打赏
  • 举报
回复
select top 10 c.Colname ,a.ArticleID,'Subject'=case when len(b.Subject)>12
then substring(b.Subject,1,12)+'...' else b.Subject end ,b.Author,b.Abstract,
b.FilePath,b.Dtime,b.Dots from ArticleColumn a, Article b ,WebColumn c where
a.ArticleID=b.ArticleID and a.Colid=5 and c.Colid=a.Colid order by b.Dots DESC
peterb 2006-01-11
  • 打赏
  • 举报
回复
使用sql中的case语句+字符串处理函数substring()就可以解决
guopeng_028 2006-01-11
  • 打赏
  • 举报
回复
谢谢楼上的兄弟,我试一下,原来数据绑定的时候能直接绑到方法上面,感谢,一会结贴
xijia_130 2006-01-11
  • 打赏
  • 举报
回复
public static string getleft(string scatitle,int cid) //从左截取串 scatitle 的 cid个字符
{
string rtn = "" ;
if(scatitle.Trim().Length>cid)
{
rtn = scatitle.Substring(0,cid) + "..." ;
}
else
{
rtn = scatitle ;
}
return rtn ;
}


在html里设置datagrid摸板列时候,在 标题 里用
getleft(<%# DataBinder.Eval(Container.DataItem,"SMT_cpname")%>,20)
winner2050 2006-01-11
  • 打赏
  • 举报
回复
我以前想了很久才模仿ASP代码写,后台又想到这种ASP。NET风格的写法。

只要是Public 的函数就能这么用
winner2050 2006-01-11
  • 打赏
  • 举报
回复
前台----保留150个字
<tr>
<td width="546" colspan="4">&· <%#Myleft(DataBinder.Eval(Container, "DataItem.Content"),150)%></td>
</tr>
后台代码

Public Function Myleft(ByVal str As String, ByVal int As Integer)
If Len(str) <= int Then
Return str
Else
str = Left((str), int) + "......"
Return str
End If
End Function
Aden 2006-01-11
  • 打赏
  • 举报
回复
显示的时候截取20个 字符,或者直接在sql里截取。
guopeng_028 2006-01-11
  • 打赏
  • 举报
回复
地确问一前找了,
到这里问也很麻烦的
上面那段也是中英混合都可以的
都是关于怎么取一定长度字符串的

我只是想知道绑在datalist里面的控件怎么绑
guopeng_028 2006-01-11
  • 打赏
  • 举报
回复
OK了,
<%#Myleft(DataBinder.Eval(Container, "DataItem.Content"),150)%>用这种方法,在150前面加了个ToString()可以了

真是麻烦大家了
jerrycool 2006-01-11
  • 打赏
  • 举报
回复
问之前找一下,可以省很多分喔.
jerrycool 2006-01-11
  • 打赏
  • 举报
回复
哈哈~~~~两个人问这个问题喔....
http://community.csdn.net/Expert/topic/4510/4510333.xml?temp=.3822443

用我这个,中英文混合都不怕,截取得标准些.

<%# CutString(DataBinder.Eval(Container.DataItem,"****","{0:c}"),length)%>'>

/// <summary>
/// 截取字符串(适用于中英文混合)
/// </summary>
/// <param name="str">原字符串</param>
/// <param name="len">长度</param>
/// <returns></returns>
public static string CutString(string str,int len)
{
str = str.Trim();
byte[] myByte = System.Text.Encoding.Default.GetBytes(str);
if(myByte.Length>len)
{
string result = "";
for(int i=0;i<str.Length;i++)
{
byte[] tempByte=System.Text.Encoding.Default.GetBytes(result);
if(tempByte.Length<len)
{
result += str.Substring(i,1);
}
else
{
break;
}
}
return result+"...";
}
else
{
return str;
}
}
guopeng_028 2006-01-11
  • 打赏
  • 举报
回复
编译器错误信息: CS1502: 与“ny114._Default.getleft(string, int)”最匹配的重载方法具有一些无效参数

源错误:



行 28: <ItemTemplate>
行 29: <asp:Image id="Image3" runat="server" ImageUrl="./Img/bullet.gif"></asp:Image>
行 30: <asp:HyperLink id=title runat="server" Text='<%# getleft(DataBinder.Eval(Container.DataItem,"title"),20) %>' Font-Size="10pt" NavigateUrl='<%# "Page.aspx?id="+ DataBinder.Eval(Container.DataItem,"zxid") %>'>
行 31: </asp:HyperLink>
行 32: <asp:Label id=date runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"dateandtime") %>' Font-Size="10pt">


源文件: F:\ny114\Default.aspx 行: 30



显示详细的编译器输出:

Microsoft (R) Visual C# .NET 编译器版本 7.10.3052.4
用于 Microsoft (R) .NET Framework 版本 1.1.4322
版权所有 (C) Microsoft Corporation 2001-2002。保留所有权利。

F:\ny114\Default.aspx(30,51): error CS1502: 与“ny114._Default.getleft(string, int)”最匹配的重载方法具有一些无效参数
F:\ny114\Default.aspx(30,59): error CS1503: 参数“1” : 无法从“object”转换为“string”


62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧