用漱口水口腔有刺痛感:asp.net(C#)中DATAGRID问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/04 17:44:42
我想用DATAGRID绑定新闻数据库
然后显示新闻标题

可是新闻标题太长

我想用DATAGIRD实现这样的效果
如果新闻标题长度大于10个字符
那么就显示
aaaaaaaaaa...
反之如果小于或等于10个字符就
aaaaaaaaaa
我知道用SUBSTRING
可是我在绑定控件的时候没有办法用啊?

请教,谢谢!
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 232px; POSITION: absolute; TOP: 120px"
runat="server" AutoGenerateColumns="False" ShowHeader="False" Width="288px">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<a href='xx.aspx?userid=<%# conn.show_news(DataBinder.Eval(Container.DataItem,"id").ToString(),10)
%>'>
<%# conn.show_news(DataBinder.Eval(Container.DataItem,"UserPwd").ToString(),10)
%>
</a>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

改成模板列再截取字符串长度不就行了啊
另附字符串截取函数如下:
public static string CutString(string inputString,int len)
{

ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen=0;
string tempString="";
byte[] s = ascii.GetBytes(inputString);
for(int i=0;i<s.Length;i++)
{
if((int)s[i]==63)
{
tempLen+=2;
}
else
{
tempLen+=1;
}

try
{
tempString+=inputString.Substring(i,1);
}
catch
{
break;
}

if(tempLen>len)
break;
}
//如果截过则加上半个省略号
byte[] mybyte=System.Text.Encoding.Default.GetBytes(inputString);
if(mybyte.Length>len)
tempString+="…";

return tempString;
}