一:<%#      Convert.ToString(DataBinder.Eval(Container.DataItem, "Title").Length>10?Convert.ToString(DataBinder.Eval(Container.DataItem, "Title")):DataBinder.Eval(Container.DataItem,"Title")) %>二:
<%# 
 if(Convert.ToString(DataBinder.Eval(Container.DataItem, "Title")).Length)>10)
{
  Convert.ToString(DataBinder.Eval(Container.DataItem, "Title").SubString(0,10)
}
else
{
DataBinder.Eval(Container.DataItem,"Title");
}
%>需要实现的功能,如果title的长度大于10,那么就取前10个字。
用的控件是repeater!可是现在有错!!一:错误:“object”并不包含对“Length”的定义
           二的错误:CS1525: 无效的表达式项“if”请问这个功能该如何实现,谢谢!

解决方案 »

  1.   

    <%#      (DataBinder.Eval(Container.DataItem, "Title").ToString().Length>10?Convert.ToString(DataBinder.Eval(Container.DataItem,"Title")).Substring(0,10):DataBinder.Eval(Container.DataItem,"Title")).ToString() %>
      

  2.   

    不要在这个里面用IF ELSE
    后台处理了显示也行。
      

  3.   

    VB
    <%
    iif(len(DataBinder.Eval(Container.DataItem, "Title"))>10,left(DataBinder.Eval(Container.DataItem, "Title"),10),DataBinder.Eval(Container.DataItem, "Title"))
    %>
      

  4.   

    <asp:TemplateColumn HeaderText="菜单描述">

    <ItemTemplate>
    <asp:Label runat="server" Text='<%# GetValue(((DataRowView)Container.DataItem)["menu_desc"].ToString()) %>' ID="Label2">
    </asp:Label>
    </ItemTemplate>
    </asp:TemplateColumn>

    protected string GetValue(string menudesc)
    {
    if(menudesc.Length>47)
    {
    menudesc = menudesc.Remove(47,menudesc.Length-47)+"...";
    } return menudesc;
    }
      

  5.   

    to:ip928(赵晓骏) 
    你的方法我试过了,错误类型是::“object”并不包含对“Length”的定义!
    如果在后台,因为用的是repeater控件,如果要取到title的值,就必须单独把title经过substring之后在用repeater绑定,但是不知道怎么绑定!
    DataSet ds=s.GetGrade();
    string title=ds.Tables[0].Rows[0].ItemArray[1].ToString();
    if(title.Length>10)

    string t=title.Substring(0,20);//得到要显示的标题
     } 
    grade.DataSource=ds.Tables[0].DefaultView;//怎样绑定t呢?
    grade.DataBind();
    这个地方不知道怎么实现,希望指点一二!
      

  6.   

    to:bidisty(浪漫草) 
    你的方法,第一是:无效的表达式项“if”错误
    第二,left 方法取出的时最左边的字符,所以就出现它把一个汉字就判断成一个字符,那么对于英语他也同样要截取,那么就不是我想要的结果!!
    如:title                   title
        你好你好你好你好         你好你好你好  
        wwwwwwwwwwwwwww          wwwwww
     两个效果一比较你就可以看得出来,left的用法是不对的!
      

  7.   

    DataSet ds=s.GetGrade();
    string title=ds.Tables[0].Rows[0]["Field1"].ToString();
    if(title.Length>10)

        string t=title.Substring(0,10);//得到要显示的标题
        ds.Tables[0].Rows[0]["Field1"] = t;
     } 
    grade.DataSource=ds.Tables[0].DefaultView;
    grade.DataBind();
      

  8.   

    to: penning(飞鱼)不太明白你的意思,可否说的明白点!
      

  9.   

    to:Martin80(Martin)
    你的方法是正确的,但是取出来的是字符,而不是字,有点遗憾!不过还是谢谢你!