本人有段代码  不知道为什么达不到效果! 望各位高手指点!!!
  Sub PtList()
      Conn.Open()
      Ad = New SqlDataAdapter("SQL语句",Conn)
      Ds = New Dataset()
      Ad.Fill(Ds,"表")
      Dim Dt As DataTable = Ds.Tables("表")
      Dim i As Integer = 0 
      Dim strvale As string
      While i < Dt.Rows.Count 
       IF Dt.Rows(i)("新闻标题").ToString.Length > 4 Then 
          strvale = Dt.Rows(i)("新闻标题").ToString.Substring(0, 4)
       Else 
          strvale = Dt.Rows(i)("新闻标题").ToString 
       End If 
       System.Math.Min(System.Threading.Interlocked.Increment(i),i-1) 
      End While
      Pt.DataSource = strvale
      Pt.DataBind()
      Conn.Close()
  End Sub 注:Conn  Ad  Ds 都已声明!!!  
     在页面上需要显示  新闻类别   新闻标题   发布日期     望各位高手 把此段代码优化 并给出C#代码  寒心万分感谢  
   
     100分落谁家???

解决方案 »

  1.   

    你从库中取出的记录.net是不会自己认为是字符串的哦,所以就不可以直接用Dt.Rows(i)("新闻标题").ToString而要用ctype(Dt.Rows(i)("新闻标题"),string).tostring.length
    或者用asp兼容的len(Dt.Rows(i)("新闻标题"))这样都可以得到字符串的长
      

  2.   

    asp.net中如何截取前面20个字?(DataBinder.Eval(Container.DataItem, "title")) 
    <%# DataBinder.Eval(Container.DataItem, "title").ToString().Substring(0,20)%>
    不过你如果你的字符长度不够20会出错的。
    你可以在.cs中写啊,判断一下长度再Substring就行了。
    <%# Left(DataBinder.Eval(Container.DataItem, "title"),20)%>截取中文和英文长度的问题 
    http://www.cnblogs.com/renyu732/archive/2005/06/20/177833.html
      

  3.   

    始终提示:    未找到类型“Char”的默认成员。
      

  4.   

    Dim strvale As string
    只有一个字符串,while循环会把前面对 strvale 的赋值覆盖掉。最后DataBind的结果只可能是最后一条结果。
      

  5.   

    你可在页面如此绑定:(取前20个字节)
    <%# myCutString(Convert.ToString(DataBinder.Eval(Container, "DataItem.ban_sno")),20) %>=========函数======================
    /// <summary>
    /// 截取以字节计算的文本长度
    /// </summary>
    /// <param name="msytr">要截取的文本串</param>
    /// <param name="intLength">要截取的字节数</param>
    /// <returns>返回截取的字节数</returns>
    private string myCutString(string mystr,int intLength)
    {
    Byte[] myByte = System.Text.Encoding.Default.GetBytes(mystr);
    string str = "";
    if(myByte.Length < intLength)
    {
    str = mystr;
    }
    else
    {
    str = System.Text.Encoding.Default.GetString(myByte,0,intLength);
    switch(System.Text.Encoding.Default.GetByteCount(mystr) - intLength)
    {
    case 1:
    str += "..";
    break;
    case -1:
    str += "...";
    break;
    default:
    break;
    }
    }
    return(str);
    }用这个方法。。抛弃你的那个
      

  6.   

    TO  Squalltao(桃子)  高手      你说的对!最后返回只有最后一条记录!      有什么办法解决吗?
      

  7.   

    TO hackate(兰花开香入梦境,独思佳人亦飘然!!)  高手     你用的是函数!  虽说可以完成类似效果!     但不是我想要的效果!
      

  8.   

    TO viscoo(冠达)  高手     你说ctype(Dt.Rows(i)("新闻标题").string).tostring.length 此法正确     但是如果使用 Dt.Rows(i)("新闻标题").string.tostring.length     也是一样的效果!