//定义变量
  int i,start,stop,t,stat,statt,pp,pagecount,pagesize;
  //变量初始值
  stat=0;
  statt=0;
  start=0;//开始查询的字符串位置,初始为0
  stop=0;
  pagesize=2000;//定义每页至少显示字符串数
  pagecount=0;
  //获得当前的页数
  pa=Request.Params["page"];
  if(pa=="" || pa==null)
  pa="1";
  pp=Convert.ToInt32(pa);
  //获得内容
  articletxt=rs["contenttxt"].ToString();
  //判断页面的内容长度是否大于定义的每页至少显示字符串数
  if(articletxt.Length>=pagesize)//如果大于字符串数,则我们可以分页显示
  {
  t=articletxt.Length/pagesize;//获得大致的总页数
  //根据目前获得的页数循环
  for(i=0;i<t;i++)
  {
   //如果查询开始位置到查询的范围超出整个内容的长度,那么就不用寻找断点(分页点);反之,查找
   if(start+pagesize<articletxt.Length)
   {
   stat=articletxt.IndexOf("</P>",start+pagesize);//查找</P>分页点的位置
   if(stat<=0)//如果找不到
   stat=articletxt.IndexOf("</p>",start+pagesize);//查找</p>分页点的位置;这里您可以自己设置分页点的判断
   }
   if(stat<=0)//如果找不到分页点,说明不能分页,也就不需要做其他的劳动了;否则,就进行分页
   articletext=articletxt;//将结果付给要导出的变量
   else
   {
   stop=stat;//分页点的位置也就作为这一页的终点位置
   if(start+pagesize>=articletxt.Length)//如果起始位置到查询的范围超出整个内容的长度,那么这一页的终点位置为内容的终点
   stop=articletxt.Length;
   if(pp==i+1)//如果是当前,那么输出当前页的内容
   articletext=articletxt.Substring(start,stop-start);//取内容的起始位置到终点位置这段字符串输出
   start=stat;//将终点位置作为下一页的起始位置
   pagecount++;//获得实际页总数
   }
  }
  }
  分页部分(这里就简单多了)
  string html;//定义分页代码变量
  if(pagecount>1)//当页数大于1的时候我们显示页数
  {
   for(i=1;i<=pagecount;i++)
   {
   if(i==pp)//如果是当前页,加粗显示
   html+="<b>["+i+"]</b> ";
   else
   html+="<a href=?id="+articleid+"&page="+i+">["+i+"]</a> ";
   }
   if(pp+1>pagecount)//显示下一页,方便浏览
   html+="<a href=?id="+articleid+"&page="+(pagecount)+">[下一页]</a></p>";
   else
   html+="<a href=?id="+articleid+"&page="+(pp+1)+">[下一页]</a></p>";
  }
以上是网上我觉得蛮好的方法,可就是不知道怎么套用他,弄了两天也没弄明白,上面的代码中时怎么存储获取每个分页的内容的,是又数组?上文没有写出.还有上文中"articleid"是用了干嘛的?我研究了好久还是不懂!
那位高手帮帮指点一下!

解决方案 »

  1.   

    articleID当然是这个文章的id啦
    这个分页有问题 比如Table中有<p>的话很有可能造成页面混乱。 不能以</p>作为分页标识。想用他的方法就把这个方法改一下就行啦 //Content是文章的内容,这里作为参数传给ShowContent方法
       //定义变量
     int i,start,stop,t,stat,statt,pp,pagecount,pagesize;
     string ShowContent(string Content)
     {
      //变量初始值
      stat=0;
      statt=0;
      start=0;//开始查询的字符串位置,初始为0
      stop=0;
      pagesize=2000;//定义每页至少显示字符串数
      pagecount=0;  //获得当前的页数
      string pa=Request.Params["page"];
      if(pa=="" || pa==null)
      pa="1";
      pp=Convert.ToInt32(pa);
       
      //获得内容
      articletxt=Content;
      //判断页面的内容长度是否大于定义的每页至少显示字符串数
      if(articletxt.Length>=pagesize)//如果大于字符串数,则我们可以分页显示
      {
      t=articletxt.Length/pagesize;//获得大致的总页数
      //根据目前获得的页数循环
      for(i=0;i<t;i++)
      {
       //如果查询开始位置到查询的范围超出整个内容的长度,那么就不用寻找断点(分页点);反之,查找
       if(start+pagesize<articletxt.Length)
       {
        //他这个分页有问题的,如果自动分页,不能随便拆html标签。 手动分页的话 自己设定一个分页标识就行了比如 #page# 那么这里的</p>换成#page#就行了。
       stat=articletxt.IndexOf("</P>",start+pagesize);//查找</P>分页点的位置
       if(stat<=0)//如果找不到
       stat=articletxt.IndexOf("</p>",start+pagesize);//查找</p>分页点的位置;这里您可以自己设置分页点的判断
       }
       if(stat<=0)//如果找不到分页点,说明不能分页,也就不需要做其他的劳动了;否则,就进行分页
       articletext=articletxt;//将结果付给要导出的变量
       else
       {
       stop=stat;//分页点的位置也就作为这一页的终点位置
       if(start+pagesize>=articletxt.Length)//如果起始位置到查询的范围超出整个内容的长度,那么这一页的终点位置为内容的终点
       stop=articletxt.Length;
       if(pp==i+1)//如果是当前,那么输出当前页的内容
       articletext=articletxt.Substring(start,stop-start);//取内容的起始位置到终点位置这段字符串输出
       start=stat;//将终点位置作为下一页的起始位置
       pagecount++;//获得实际页总数
         
       }
      }
     }
      return articletext;
    }
    string ShowPageList()
    {
       string html;//定义分页代码变量
      if(pagecount>1)//当页数大于1的时候我们显示页数
      {
       for(i=1;i<=pagecount;i++)
       {
       if(i==pp)//如果是当前页,加粗显示
       html+="<b>["+i+"]</b> ";
       else
       html+="<a href=?id="+articleid+"&page="+i+">["+i+"]</a> ";
       }
       if(pp+1>pagecount)//显示下一页,方便浏览
       html+="<a href=?id="+articleid+"&page="+(pagecount)+">[下一页]</a></p>";
       else
       html+="<a href=?id="+articleid+"&page="+(pp+1)+">[下一页]</a></p>";
      }
      return html;
    }
    调用这两个方法就行了 不知道你有没有看懂……
      

  2.   

    我的显示内容页neirong.asp.cs protected void Page_Load(object sender, EventArgs e)
        {
            string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("ttys.mdb");
            OleDbConnection conn = new OleDbConnection(connStr);
            OleDbCommand cmd = new OleDbCommand("select * from wenzhang where id=45", conn);
            conn.Open();
            OleDbDataReader dr = cmd.ExecuteReader();
            if (dr.Read() == true)
            {
                lbldaohang.Text = dr["leibie"].ToString()+"专栏"+" > 正文";
                lblbiaoti.Text = dr["biaoti"].ToString();
                lbllaiyuan.Text = dr["laiyuan"].ToString();
                lblshijian.Text = dr["shijian"].ToString();
                lblbianji.Text = "(责任编辑:"+dr["bianji"].ToString()+")";
                lblneirong.Text = dr["neirong"].ToString();//文章内容         
            }
            conn.Close();    }要怎么套用上面的代码?还有设计界面还要加什么标记?