绑定datagrid,显示出字符的长度问题

oyff 2006-10-25 01:01:46
绑定了datagrid,从数据库里取出的字符我希望只显示前10个,如果超过10个,就显示前十个字符+...
请问如何实现?
...全文
153 17 打赏 收藏 举报
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
oyff 2006-10-30
  • 打赏
  • 举报
回复
再顶一次,我也想早日结贴啊
oyff 2006-10-30
  • 打赏
  • 举报
回复
在DataGrid1_ItemDataBound事件里面:
private void DataGrid1_ItemDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Item.ItemType!=ListItemType.DataCell)
{
if (e.Item.Cells[1].Text.Length>10)
{
e.Item.Cells[1].Text = e.Item.Cells[1].Text.Substring(0, 10) + "";
}
}
}

这种方法我试了,不好使.
e.Item.Cells[0]里取出来的值是&nbps,e.Item.Cells[1]更是越界了
怎么办?
daishengs 2006-10-30
  • 打赏
  • 举报
回复
//取字符串长度s = "iam方枪枪";
public int getlen(string s)
{
  int len = s.Length;//will output as 6
  byte[] sarr = System.Text.Encoding.Default.GetBytes(s);
  len = sarr.Length;//will output as 3+3*2=9
return len;
}
public string getstr( object o1)
{
string strtitle=o1.ToString();
if (getlen(strtitle)>10)
{
//
}
else
{}
return strtitle;
}
如果楼主在前台只是普通的绑定列
可以在DataGrid_ItemDataBound事件中处理
private void DataGrid1_ItemDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Item.ItemIndex>=0)
{
if (getlen(e.Item.Cells[1].Text)>10)
{
//
}
}
}
//如果是用模板例的:
<asp:DataGrid id="DgInquiryInfo" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="标题">
<ItemTemplate>
<asp:Label id=lblCode runat="server" Text=
'<%# getstr(DataBinder.Eval(Container.DataItem,"title"))%> ' >
</asp:Label>

</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
include_me 2006-10-30
  • 打赏
  • 举报
回复
if(e.Item.Cells[0] != "&nbps;")
{
....
}

不过这些都不好..

如果是中英文结合的,样式很不好看...

如: aaaaa...
中华人民共...

考虑下什么方法可以测下文字长度呀? [期盼]

jingye721 2006-10-30
  • 打赏
  • 举报
回复
e.Item.Cells[0]里取出来的值是&nbps,e.Item.Cells[1]更是越界了
-------------------------------------------------------
Cells[1]和Cells[0]应该是没什么关系的,它们是两列,你有几列就可以判断几列啊:
if (e.Item.Cells[0].Text.Length>10)
{
e.Item.Cells[0].Text = e.Item.Cells[1].Text.Substring(0, 10) + "...";
}
if (e.Item.Cells[1].Text.Length>10)
{
e.Item.Cells[1].Text = e.Item.Cells[1].Text.Substring(0, 10) + "...";
}
if (e.Item.Cells[2].Text.Length>10)
{
e.Item.Cells[2].Text = e.Item.Cells[1].Text.Substring(0, 10) + "...";
}
...
jingye721 2006-10-26
  • 打赏
  • 举报
回复
在DataGrid1_ItemDataBound事件里面:
private void DataGrid1_ItemDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Item.ItemType!=ListItemType.DataCell)
{
if (e.Item.Cells[1].Text.Length>10)
{
e.Item.Cells[1].Text = e.Item.Cells[1].Text.Substring(0, 10) + "";
}
}
}
MoonQQ 2006-10-26
  • 打赏
  • 举报
回复
//ItemDataBound //DataGrid 限定内容宽度
public void DataGrid1_ItemDataBound(object sender,DataGridItemEventArgs e)
{
if(e.Item.ItemType!=ListItemType.Header)
{
if(e.Item.Cells[x].Text.Trim().Length>=17)
{
e.Item.Cells[x].Text=e.Item.Cells[x].Text.Substring(0,16)+"...";
}
}
}
oyff 2006-10-26
  • 打赏
  • 举报
回复
楼上的这段代码放在哪里?
kittenlpf 2006-10-26
  • 打赏
  • 举报
回复
<%# DataBinder.Eval(Container.DataItem,"newtitle").ToString().Length>10?DataBinder.Eval(Container.DataItem,"newtitle").ToString().Substring(0,10) + ".....":DataBinder.Eval(Container.DataItem,"newtitle").ToString() %>
oyff 2006-10-26
  • 打赏
  • 举报
回复
顶一下,有人会吗?
oyff 2006-10-26
  • 打赏
  • 举报
回复
楼上的办法不好使啊
wslinfeng 2006-10-26
  • 打赏
  • 举报
回复
2楼的方法好使,放在前台,html里面,
不行的话也可以后台写个函数函数,protected的,前台好调用。
zhoufucai 2006-10-26
  • 打赏
  • 举报
回复
自己在后台代码中写一个函数,在模版列中调用该函数就可以了。
kittenlpf 2006-10-26
  • 打赏
  • 举报
回复
放在模板列里就OK了
kittenlpf 2006-10-26
  • 打赏
  • 举报
回复
<asp:DataGrid id="DgInquiryInfo" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="标题">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"newtitle").ToString().Length>10?DataBinder.Eval(Container.DataItem,"newtitle").ToString().Substring(0,10) + ".....":DataBinder.Eval(Container.DataItem,"newtitle").ToString() %>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
jc15271149 2006-10-25
  • 打赏
  • 举报
回复

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
{
if(e.Item.Cells[0].Text.Length>10)
{
e.Item.Cells[0].Text = e.Item.Cells[0].Text.SubString(0,10)+"...";
}

}
}
xingyaohua 2006-10-25
  • 打赏
  • 举报
回复
<%# DataBinder.Eval(Container.DataItem,"newtitle").ToString().Length>10?DataBinder.Eval(Container.DataItem,"newtitle").ToString().Substring(0,10):DataBinder.Eval(Container.DataItem,"newtitle").ToString() %>
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-25 01:01
社区公告

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

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