问题
现在有这样一个需求,将一个表绑定到中,其中有一列是绑定的标题,我想这一列就显示10个字符,如果超过10个字符就截取10个字符然后+.... 。 然后想到了gvdongtai_RowDataBound 这个事件 。 于是
- <asp:GridView ID="gvdongtai" AutoGenerateColumns="False" runat="server" Width="170px"
- GridLines="None" OnRowDataBound="gvdongtai_RowDataBound">
- <Columns>
- <asp:TemplateField>
- <ItemTemplate>
- <li><a href='DynamicNews.aspx?DynamicID=<%#Eval("ID")%>' class="c">
- <%#Eval("Title")%>
- </a></li>
- <asp:Label ID="test" runat="server" Visible="false" Text='<%#Eval("Title") %>' />
- </ItemTemplate>
- </asp:TemplateField>
- </Columns>
- </asp:GridView>
- //后台
- protected void gvdongtai_RowDataBound(object sender, GridViewRowEventArgs e)
- {
- if (e.Row.RowType == DataControlRowType.DataRow)
- {
- 1种 //string s = e.Row.Cells[0].Text;
- //Label mylabel = new Label();
- //mylabel = (Label)e.Row.FindControl("Test");
- 2种//string s = mylabel.Text.Trim();
- 3种string s = DataBinder.Eval(e.Row.DataItem, "Title").ToString().Trim();
- //e.Row.Cells[0].Text = s.Length > 20 ? s.Substring(0, 20) : s.Trim();
- }
- }
三种修改的方法 ,其中第一种 ,根本获得不到值 ,我现在也没搞懂为什么获取的都是“”
第二种,第三种都可以正常获得值 。但是再重新修改e.Row.Cells[0].Text 的时候,我本来这一个字段是超链接字段,这样修改以后,超链接没有了。
解决方案:
1(kaigefengchen 的解决方案).
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Info").ToString().Substring(0,10)%> //当然这里边可以使用 ? : 运算符判断
</ItemTemplate>
2(waltguo 的解决方案).
- 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;
- }
<%# Strings.CutString(Eval("NewsTitle").ToString(),10)%>//这是前台,aspx页面里的,调用,一Strings类的CutString方法,这样就可以实现了。,
让我搞了1个小时 还是别人帮忙的。 记录一下。。