PDPerson pd = new PDPerson();        //取得当前页数,并判断
        if (Request["pagesize"] == null)
            Record_Per_Page = 25;
        else
            Record_Per_Page = Convert.ToInt32(Request["pagesize"]);        //获得总记录数
        nRecCount = pd.GetObjectCountByTime(timeStart, timeEnd);
        StringBuilder strHtml = new StringBuilder("");        //判断是否存在数据记录
        if (nRecCount > 0)
        {
            //确定数据记录要显示的页面数
            nPageCount = nRecCount / Record_Per_Page;
            if (nRecCount % Record_Per_Page > 0)
                nPageCount++;
            if (nPage < 1)
                nPage = 1;
            if (nPage > nPageCount)
                nPage = nPageCount;            //将页面显示到屏幕上,并作连接
                for (int i = 1; i <= nPageCount; i++)
                {
                    strHtml.Append("<a href='Dengji.aspx?page=" + i + "&timestart=" + timeStart.ToString("yyyy-MM-dd") + "&timeend=" + timeEnd.ToString("yyyy-MM-dd") + " '>");
                    //strHtml.Append("<a href='Dengji.aspx?page=" + i + "'>");
                    if (i == nPage) strHtml.Append("<b>" + i + "</b>");
                    else strHtml.Append(i);
                    strHtml.Append("</a>&nbsp");                }                //确认当前页面的开始记录和终止记录
                int nStart = Record_Per_Page * (nPage - 1);
                int nEnd = nStart + Record_Per_Page - 1;
                if (nEnd > nRecCount - 1)
                    nEnd = nRecCount - 1;            strlnk = strHtml.ToString();        StringBuilder StrSql = new StringBuilder();
        StringBuilder strSql = new StringBuilder();
        StrSql.AppendFormat("SELECT distinct TOP {0}  * FROM C_Work_Object WHERE  ", Record_Per_Page.ToString());
        StrSql.AppendFormat("( Obj_id NOT IN (SELECT TOP {0} Obj_id  FROM C_Work_Object", (Record_Per_Page * (nPage - 1)).ToString());
        if (timeStart != DateTime.MinValue || timeEnd != DateTime.MinValue)
        {
            StrSql.Append(" where ");
            if (timeStart == DateTime.MinValue)
            {
                StrSql.AppendFormat(" Obj_dotime < '{0}'", timeEnd.ToString());
                strSql.AppendFormat(" Obj_dotime < '{0}')", timeEnd.ToString());
            }
            else if (timeEnd == DateTime.MinValue)  
            {
                StrSql.AppendFormat(" Obj_dotime > '{0}'", timeStart.ToString());
                strSql.AppendFormat(" Obj_dotime > '{0}')", timeStart.ToString());
            }
            else
            {
                StrSql.AppendFormat(" Obj_dotime between '{0}'  and '{1}'", timeStart.ToString(), timeEnd.ToString());
                strSql.AppendFormat(" Obj_dotime between '{0}'  and '{1}')", timeStart.ToString(), timeEnd.ToString());
            }
           
        }
        StrSql.Append(" ORDER BY Obj_id DESC)");
        StrSql.Append(" and ");
        strSql.Append(" ORDER BY Obj_id DESC");
        pdperson = pd.GetObjectBySql(StrSql.ToString() +strSql.ToString() );
        }
    }
这是我的分页代码,没有问题的,但
 <% 
                   //if (trcount == 0) return;
                    for (int i = nStart; i <= nEnd; i++)
                        {
                            ProcessData(Convert.ToInt32(pdperson.Rows[i]["Obj_id"]));
                       %>
                <tr>
                    <td style="width:300px"><%=pdperson.Rows[i]["Obj_caseid"].ToString()%></td>
                                   </tr>
                   <%
                    }
                %>
每个页面只输出了一条记录,我想每个页面输出20条记录,怎么做啊??望大狭们指教啊???急

解决方案 »

  1.   

    使用DataGrid吧,这么写又乱还不稳定。
    DataGrid支持自动分页的。
      

  2.   

    晕,关键是用DataGrid,我的数据不好取啊,能用我也用啊~~~郁闷???
      

  3.   

    关键是你分页的sql取的数据集划分的问题。如果数据量不大的话建议使用PagedDataSource 就可以很容易的做到。如果数据大的话建议使用存储过程来取记录集