提示:
System.ArgumentOutOfRangeException:索引和长度必须引用该字符串内的位置。参数名: length为什么呀?

解决方案 »

  1.   

    举个例子:Convert.ToString(DataBinder.Eval(Container.DataItem, "BookName"))
    得到的书名为 “abcd”
    然后.Substring(0,9),书名长度为4,你确取9个字符,当然会出错了。
      

  2.   

    <font size="2">·
    <%# 
    if(Convert.ToString(DataBinder.Eval(Container.DataItem, "BookName")).Lenth>9)
       Convert.ToString(DataBinder.Eval(Container.DataItem, "BookName")).Substring(0,9) 
    %>...</font>
      

  3.   

    你能确定你的bookname的长度都大于9吗?
      

  4.   

    你的意识我明白了,你是想当大约9个字符时只显示9个,然后...
    这样处理吧
    <script language='javascript'>
      var tmp= '<%# DataBinder.Eval(Container.DataItem, "BookName")%>';   
      tmp= tmp.length>10?tmp.substring(0,10)+"...":tmp;
      document.write("<font size='2'>·"+tmp+"</font>");
    </script>
      

  5.   

    public string GetSub(object obj)
    {
    string str=obj.ToString();
    if(str.Length<=22) return str;
    return str.Substring(0,22)+"...";
    }<%# GetSub(DataBinder.Eval(Container.DataItem, "BookName"))%>
    这样也可以