原本程序是可以正常使用的  结果我升级了vs2008sp1后还有对aspnetpager当时引用的dll文件删除了 就是添加到工具栏里的时候选择的那个文件  不过现在程序bin里面还是有的 我也重新添加了 就出问题了  现在只能显示首页了 不过第几页和页数还是正常的 就是第一液翻过去后就没东西了 各位大神帮我看看错在哪里了 这个到底怎么回事呢
aspx文件
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="house_page.ascx.cs" Inherits="Control_house_page" %>
<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %>
<div id="page">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<div id="pageview0">
<div id="pv1">是否中介</div>
<div id="pv2">小区名称</div>
<div id="pv3">所在区域</div>
<div id="pv4">户型结构</div>
<div id="pv5">房屋类型</div>
<div id="pv6">房屋面积</div>
<div id="pv7">出售价格</div>
<div id="pv8">发布日期</div>
</div>
</HeaderTemplate>
<ItemTemplate>
<div onmouseover="this.style.backgroundColor='#CC99FF'" onmouseout="this.style.backgroundColor='#ffffff'" id="pageview1">
<div id="pv1"><%#DataBinder.Eval(Container.DataItem, "House_ifzhongjie")%></div>
<div id="pv2">[<a href="../housedetail.aspx?<%#DataBinder.Eval(Container.DataItem, "House_id")%>"><%#DataBinder.Eval(Container.DataItem, "House_name")%></a>]</div>
<div id="pv3"><%#DataBinder.Eval(Container.DataItem, "House_local")%></div>
<div id="pv4"><%#DataBinder.Eval(Container.DataItem, "House_usetype")%></div>
<div id="pv5"><%#DataBinder.Eval(Container.DataItem, "House_type")%></div>
<div id="pv6"><%#DataBinder.Eval(Container.DataItem, "House_area")%></div>
<div style="color: #FF6600" id="pv7"><%#DataBinder.Eval(Container.DataItem, "House_price")%>万</div>
<div id="pv8"><%#DataBinder.Eval(Container.DataItem, "House_public_time", "{0:d}")%></div>
</div>
</ItemTemplate>
<AlternatingItemTemplate>
<div onmouseover="this.style.backgroundColor='#CC99FF'" onmouseout="this.style.backgroundColor='#D7D7FF'" id="pageview2">
<div id="pv1"><%#DataBinder.Eval(Container.DataItem, "House_ifzhongjie")%></div>
<div id="pv2">[<a href="../housedetail.aspx?<%#DataBinder.Eval(Container.DataItem, "House_id")%>"><%#DataBinder.Eval(Container.DataItem, "House_name")%></a>]</div>
<div id="pv3"><%#DataBinder.Eval(Container.DataItem, "House_local")%></div>
<div id="pv4"><%#DataBinder.Eval(Container.DataItem, "House_usetype")%></div>
<div id="pv5"><%#DataBinder.Eval(Container.DataItem, "House_type")%></div>
<div id="pv6"><%#DataBinder.Eval(Container.DataItem, "House_area")%></div>
<div style="color: #FF6600" id="pv7"><%#DataBinder.Eval(Container.DataItem, "House_price")%>万</div>
<div id="pv8"><%#DataBinder.Eval(Container.DataItem, "House_public_time", "{0:d}")%></div>
</div>
</AlternatingItemTemplate>
</asp:Repeater>
    <webdiyer:AspNetPager ID="AspNetPager1" runat="server"  
    showcustominfosection="Left" width="100%" 
    CustomInfoHTML="共%PageCount%页,当前为第%CurrentPageIndex%页,每页%PageSize%条" 
    ShowPageIndexBox="Never" CssClass="paginator" CurrentPageButtonClass="cpb" 
    onpagechanged="AspNetPager1_PageChanged" PageSize="20" FirstPageText="首页" 
    LastPageText="最后一页" NextPageText="下一页" PrevPageText="上一页" UrlPaging="True" 
    CustomInfoSectionWidth="">
    </webdiyer:AspNetPager>
</div>
aspx.cs文件
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Wuqi.Webdiyer;
public partial class Control_house_page : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BLL.HouseBll bh = new BLL.HouseBll();
            AspNetPager1.RecordCount = bh.pagecount();
            //Label1.Text = bh.pagecount().ToString();
            //Repeater1.DataSource = bh.housepage(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
            //Repeater1.DataBind();
        }
    }
    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
    {
        BLL.HouseBll bh = new BLL.HouseBll();
        //AspNetPager1.RecordCount = bh.pagecount(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
        Repeater1.DataSource = bh.housepage(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
        Repeater1.DataBind();
    }
}
Dal文件
public int pagecount()
        {
            SqlHelper sh = new SqlHelper();
            SqlParameter[] parameters = {
new SqlParameter("@pageindex", null),
new SqlParameter("@pagesize", null),
                    new SqlParameter("@docount", true)};
            SqlDataReader sdr = sh.RunProcedure("House_info_page", parameters);
            sdr.Read();
            int hcount;
            hcount = sdr.GetInt32(0);
            sdr.Close();
            return hcount;    
        }
        public List<houseModel> housepage(int pageindex, int pagesize)
        {
            SqlHelper sh = new SqlHelper();
            SqlParameter[] parameters = {
new SqlParameter("@pageindex", pageindex),
new SqlParameter("@pagesize", pagesize),
                    new SqlParameter("@docount", false)};
            SqlDataReader sdr = sh.RunProcedure("House_info_page", parameters);
            List<houseModel> li = new List<houseModel>();
            while (sdr.Read())
            {
                houseModel hm = new houseModel();
                hm.House_name = sdr["House_name"].ToString();
                hm.House_usetype = sdr["House_usetype"].ToString();
                hm.House_area = Convert.ToDecimal(sdr["House_area"].ToString());
                hm.House_price = Convert.ToDecimal(sdr["House_price"].ToString());
                hm.House_public_time = Convert.ToDateTime(sdr["House_public_time"].ToString());
                hm.House_id = Convert.ToInt32(sdr["House_id"].ToString());
                hm.House_type = sdr["House_type"].ToString();
                hm.House_ifzhongjie = sdr["House_ifzhongjie"].ToString();
                hm.House_local = sdr["House_local"].ToString();
                li.Add(hm);
            }
            sdr.Close();
            return li;
        }

解决方案 »

  1.   

    ALTER procedure House_info_page 
    (@pagesize int,
    @pageindex int,
    @docount bit)
    asif(@docount=1)
    select count(*) from House_info as hcount
    else
    begin
     with temptbl as (
    SELECT ROW_NUMBER() OVER (ORDER BY House_public_time desc)AS Row, O.House_id,O.House_name,O.House_local,O.House_usetype,O.House_type,O.House_area,O.House_price,O.House_ifzhongjie,O.House_public_time from House_info O )
     SELECT * FROM temptbl where Row between (@pageindex-1)*@pagesize+1 and (@pageindex-1)*@pagesize+@pagesize
    end
    就这个存储过程
      

  2.   


    这前面写获得总数
    AspNetPager1.RecordCount = bh.pagecount();if (!IsPostBack)
      {
    bind();
        }这是绑定
    protect void bind()
    {
          BLL.HouseBll bh = new BLL.HouseBll();
      Repeater1.DataSource = bh.housepage(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
      Repeater1.DataBind();
    }
     protected void AspNetPager1_PageChanged(object sender, EventArgs e)
      {
               bind();
      }你出现的原因就是每次都从新查了一遍,总数要放在外面的!这样他才会算出每页的开始值和结束值了!
    你该成这样试试!
      

  3.   

    这前面写获得总数
    AspNetPager1.RecordCount = bh.pagecount();if (!IsPostBack)
      {
    bind();
        }这是绑定
    protect void bind()
    {
          BLL.HouseBll bh = new BLL.HouseBll();
      Repeater1.DataSource = bh.housepage(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
      Repeater1.DataBind();
    }
     protected void AspNetPager1_PageChanged(object sender, EventArgs e)
      {
               bind();
      }你出现的原因就是每次都从新查了一遍,总数要放在外面的!这样他才会算出每页的开始值和结束值了!
    你该成这样试试!
      

  4.   

    。。按找小安的方法改了、  没有用啊  我用的url所以只绑一次的
     if (!IsPostBack)
            {
                BLL.HouseBll bh = new BLL.HouseBll();
                AspNetPager1.RecordCount = bh.pagecount();
                //Label1.Text = bh.pagecount().ToString();
                //Repeater1.DataSource = bh.housepage(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
                //Repeater1.DataBind();
            }
        }
        void bind()
            {
                BLL.HouseBll bh = new BLL.HouseBll();
                Repeater1.DataSource = bh.housepage(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
                Repeater1.DataBind();
            }    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
        {
            //BLL.HouseBll bh = new BLL.HouseBll();
            ////AspNetPager1.RecordCount = bh.pagecount(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
            //Repeater1.DataSource = bh.housepage(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
            //Repeater1.DataBind();
            bind();
        }
    我之前这个程序能够运行的
      

  5.   

    恩 翻页的  断点不怎么会用啊
    对了之前曾经提示说 要用到using什么的 就是找不到引用  结果我一折腾现在这个提示找不到了  我都重新引用了n遍了  
      

  6.   

    看不出了 不怎么会用断点不过也折腾了不知道对不对
    AspNetPager1.RecordCount一直是50
    AspNetPager1.PageSize一直是20
    AspNetPager1.StartRecordIndex分别是1,21,41
    我以前不会设断点的 我现在把
      AspNetPager1.RecordCount = bh.pagecount();和
          Repeater1.DataSource = bh.housepage(AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
    这两行设为断点 
    上面的数据是我鼠标放上去的显示 然后按f5执行看出来的
      

  7.   

    那就对呀,你看当AspNetPager1.StartRecordIndex是21时,返回的数据表里有没有数据?????
    这样就能找到原因了吧按F11单步执行!会看的更清楚的!
      

  8.   

    找到问题了
    问题出在存储过程 
    当输入pigesize=20 pageindex=21 docount=false 不输出数据
    当输入pigesize=20 pageindex=1 docount=false 则输出20条数据
    这个存储过程我是用aspnetpager生成的 
    真是奇怪啊  以前能用现在不能用了 哎不知道怎么改了 难道我打补丁打坏了?
    先谢谢各位的帮忙
      

  9.   

    不是存储过程的问题还是搞错了我按第2页的时候
    AspNetPager1.StartRecordIndex变成21了
    第三页变成41了 我倒
      

  10.   

    问题很明显,你把StartRecordIndex当成了当前页索引传给你的housepage方法,请看一下帮助文档中的说明,另外说明一下,当前页索引是CurrentPageIndex
      

  11.   

    杨老师,牛人啊我刚开始学分页,就有人告诉我用aspnetpager控件,不过我不晓得什么版本,一直用了。。
    引用dll文件,之后写上那句话,之后就用存储过程分页了。
      

  12.   

    用这个  存储过程分页 试试,本人感觉还不错
    /****** 对象:  StoredProcedure [dbo].[UP_GetRecordByPage]    脚本日期: 07/23/2010 14:58:47 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    --------分页存储过程CREATE  PROCEDURE [dbo].[UP_GetRecordByPage]
        @tblName      varchar(255),       --table name
        @fldName      varchar(255),       --key filed name
        @PageSize     int = 10,           --page size
        @PageIndex    int = 1,            --page index
        @IsReCount    bit = 0,            --record count
        @OrderType    bit = 0,            --asc:0 or desc:1
        @strWhere     varchar(1000) = ''  --where
    ASdeclare @strSQL   varchar(6000)       
    declare @strTmp   varchar(1000)        
    declare @strOrder varchar(400)        if @OrderType != 0
    begin
        set @strTmp = '<(select min'
        set @strOrder = ' order by [' + @fldName +'] desc'
    end
    else
    begin
        set @strTmp = '>(select max'
        set @strOrder = ' order by [' + @fldName +'] asc'
    endset @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
        + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
        + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
        + @strOrderif @strWhere != ''
        set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
            + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
            + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
            + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
            + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrderif @PageIndex = 1
    begin
        set @strTmp =''
        if @strWhere != ''
            set @strTmp = ' where ' + @strWhere    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
            + @tblName + ']' + @strTmp + ' ' + @strOrder
    endif @IsReCount != 0
        set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere--print @strSql
    exec (@strSQL)