<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# (Eval("concent")).Tostring.Substring(0,5) %>'></asp:Label>
</ItemTemplate>
但系统提示以下错误提示:
错误 1 “object”并不包含“Tostring”的定义 C:\SureWinWeb\WebSite13\Default-示例2.aspx 28
请问该怎样改,才可以使该字段在GridView里面只显示前5个字符呢?
请各位朋友赐教,谢谢!!!
6 个解决方案
#1
<%# CutString(Eval("title").ToString(), 37)%>
变为,注:CutString(string str,int length)是后台定义的一个公有函数,str为要显示的数据,length为要显示长度.
后台代码
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text= ' <%# (Eval("concent")).Tostring.Substring(0,5) % > ' > </asp:Label >
</ItemTemplate >
变为,注:CutString(string str,int length)是后台定义的一个公有函数,str为要显示的数据,length为要显示长度.
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text= '<%# CutString(Eval("concent").ToString(), 40)%>' > </asp:Label >
</ItemTemplate >
后台代码
/// <summary>
/// 按字符串实际长度截取定长字符窜
/// </summary>
/// <param name="str">原字符串</param>
/// <param name="length">要截取的长度</param>
/// <returns>string型字符串</returns>
public static string CutString(string str, int length)
{
string delsqace = str.Trim();
int i = 0, j = 0;
foreach (char chr in delsqace)
{
if ((int)chr > 127)
{
i += 2;
}
else
{
i++;
}
if (i > length)
{
delsqace = delsqace.Substring(0, j) + "...";
break;
}
j++;
}
return delsqace;
}
#2
楼上的朋友,首先感谢您的热心回复,并且试验通过,另外,请教一下大虾你的代码的意思,总共有三个问题,请再赐教,谢谢!!!
foreach (char chr in delsqace)//问题1:这句该咋理解,不太好理解,
{
if ((int)chr > 127)//问题2:为什么如果Chr的长度大于127就将I的值加2呢?否则就I++呢?
{
i += 2;
}
else
{
i++;
}
if (i > length)//问题3:为什么I>length的长度就执行下面的动作呢?
{
delsqace = delsqace.Substring(0, j) + "...";
break;
}
j++;
}
foreach (char chr in delsqace)//问题1:这句该咋理解,不太好理解,
{
if ((int)chr > 127)//问题2:为什么如果Chr的长度大于127就将I的值加2呢?否则就I++呢?
{
i += 2;
}
else
{
i++;
}
if (i > length)//问题3:为什么I>length的长度就执行下面的动作呢?
{
delsqace = delsqace.Substring(0, j) + "...";
break;
}
j++;
}
#3
foreach (char chr in delsqace)//问题1:这句该咋理解,不太好理解,
解答:从你输入的字符串中一个一个的取字节.看看C#基本语法
{
if ((int)chr > 127)//问题2:为什么如果Chr的长度大于127就将I的值加2呢?否则就I++呢?
{
i += 2; 解答2:判断字符的ACSII码,如果大于127就是中文,显示要两位,i=i+2
} 要小于127是是一个字节,显示只要一位i++
else
{
i++;
}
if (i > length)//问题3:为什么I >length的长度就执行下面的动作呢?
{ 解答3:因为你上面不是计算出你输入字符串的长度吗?
要是字符串的长度小于你要显示的长度,就不用截取.
要是字符串的长度大于你要显示的长度,就按长度截取.
delsqace = delsqace.Substring(0, j) + "...";
break;
}
j++;
}
#4
学习中
#5
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text= ' <%# (Eval("concent")).Tostring.Substring(0,5) % > ' > </asp:Label >
</ItemTemplate >
改为:
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text= ' <%# (Eval("concent")).Tostring().Substring(0,5) % > ' > </asp:Label >
</ItemTemplate >
#6
感谢楼上各位大虾的热心回复,特别感谢“东北小胖”大虾。
另外,“hayou1231”大虾的代码也是行得通的,但假如你字段只有4个字符串,如果你要截取6个的话,就会出错的,而采用“东北小胖”的方法,就不存在这个BUG。
再次谢谢!!!
另外,“hayou1231”大虾的代码也是行得通的,但假如你字段只有4个字符串,如果你要截取6个的话,就会出错的,而采用“东北小胖”的方法,就不存在这个BUG。
再次谢谢!!!
#1
<%# CutString(Eval("title").ToString(), 37)%>
变为,注:CutString(string str,int length)是后台定义的一个公有函数,str为要显示的数据,length为要显示长度.
后台代码
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text= ' <%# (Eval("concent")).Tostring.Substring(0,5) % > ' > </asp:Label >
</ItemTemplate >
变为,注:CutString(string str,int length)是后台定义的一个公有函数,str为要显示的数据,length为要显示长度.
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text= '<%# CutString(Eval("concent").ToString(), 40)%>' > </asp:Label >
</ItemTemplate >
后台代码
/// <summary>
/// 按字符串实际长度截取定长字符窜
/// </summary>
/// <param name="str">原字符串</param>
/// <param name="length">要截取的长度</param>
/// <returns>string型字符串</returns>
public static string CutString(string str, int length)
{
string delsqace = str.Trim();
int i = 0, j = 0;
foreach (char chr in delsqace)
{
if ((int)chr > 127)
{
i += 2;
}
else
{
i++;
}
if (i > length)
{
delsqace = delsqace.Substring(0, j) + "...";
break;
}
j++;
}
return delsqace;
}
#2
楼上的朋友,首先感谢您的热心回复,并且试验通过,另外,请教一下大虾你的代码的意思,总共有三个问题,请再赐教,谢谢!!!
foreach (char chr in delsqace)//问题1:这句该咋理解,不太好理解,
{
if ((int)chr > 127)//问题2:为什么如果Chr的长度大于127就将I的值加2呢?否则就I++呢?
{
i += 2;
}
else
{
i++;
}
if (i > length)//问题3:为什么I>length的长度就执行下面的动作呢?
{
delsqace = delsqace.Substring(0, j) + "...";
break;
}
j++;
}
foreach (char chr in delsqace)//问题1:这句该咋理解,不太好理解,
{
if ((int)chr > 127)//问题2:为什么如果Chr的长度大于127就将I的值加2呢?否则就I++呢?
{
i += 2;
}
else
{
i++;
}
if (i > length)//问题3:为什么I>length的长度就执行下面的动作呢?
{
delsqace = delsqace.Substring(0, j) + "...";
break;
}
j++;
}
#3
foreach (char chr in delsqace)//问题1:这句该咋理解,不太好理解,
解答:从你输入的字符串中一个一个的取字节.看看C#基本语法
{
if ((int)chr > 127)//问题2:为什么如果Chr的长度大于127就将I的值加2呢?否则就I++呢?
{
i += 2; 解答2:判断字符的ACSII码,如果大于127就是中文,显示要两位,i=i+2
} 要小于127是是一个字节,显示只要一位i++
else
{
i++;
}
if (i > length)//问题3:为什么I >length的长度就执行下面的动作呢?
{ 解答3:因为你上面不是计算出你输入字符串的长度吗?
要是字符串的长度小于你要显示的长度,就不用截取.
要是字符串的长度大于你要显示的长度,就按长度截取.
delsqace = delsqace.Substring(0, j) + "...";
break;
}
j++;
}
#4
学习中
#5
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text= ' <%# (Eval("concent")).Tostring.Substring(0,5) % > ' > </asp:Label >
</ItemTemplate >
改为:
<ItemTemplate >
<asp:Label ID="Label1" runat="server" Text= ' <%# (Eval("concent")).Tostring().Substring(0,5) % > ' > </asp:Label >
</ItemTemplate >
#6
感谢楼上各位大虾的热心回复,特别感谢“东北小胖”大虾。
另外,“hayou1231”大虾的代码也是行得通的,但假如你字段只有4个字符串,如果你要截取6个的话,就会出错的,而采用“东北小胖”的方法,就不存在这个BUG。
再次谢谢!!!
另外,“hayou1231”大虾的代码也是行得通的,但假如你字段只有4个字符串,如果你要截取6个的话,就会出错的,而采用“东北小胖”的方法,就不存在这个BUG。
再次谢谢!!!