欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

AspNetPager 控件的 ------AspNetPager 控件个人摘要的介绍和用法(两种用法,一种是url中的页数,一种是url中的非页数(url重写)

最编程 2024-04-15 12:46:59
...

@AspNetPager分页控件Webdiyer

.AspNetPager是一个单纯的分页控件,它的功能仅仅是显示一系列可以由用户灵活定义的分页按钮及页索引输入文本框,点击分页按钮或页索引文本框的跳转按钮引发分页事件,用户可以在该事件处理程序中根据当前页索引获取指定的数据并显示,AspNetPager控件与要显示的数据没有直接联系,数据从何而来以及如何显示与分页控件毫无关系,所以没有所谓AspNetPager是否支持某一数据库的说法,用户可以从任何地方获取数据。

.AspNetPager是完全免费且开放源代码的ASP.NET控件,可以被用于商业目的,唯一的条件是保留控件中的版权信息。

.AspNetPager和存储过程没有任何联系,只要能够获取要分页的数据,无论用什么方法都可以。

(原理:就是将查询的总数赋值给控件的RecordCount 属性,前台页面代码中设置好页容量pagesize,然后控件就会计算好总页数等等。然后给控件的PageChanged事件中加入获取数据函数,分页控件分页改变时,后台就会请求数据,后台请求数据时则根据控件的当前页面索引(CurrentPageIndex)和页容量(pagesize)去请求数据。)

 

@第一种使用方法,url中不带页码数(http://help.chinawutong.com/ListMemberNews.aspx)

1,将下载到的dll和xml放入所在项目的bin目录中

2,aspx页面文件页首添加

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

分页处放置

 <webdiyer:AspNetPager ID="Pager" runat="server" OnPageChanged="Pager_PageChanged" ShowCustomInfoSection="Right" ShowInputBox="Always" SubmitButtonText="转到" CustomInfoTextAlign="Center">

 </webdiyer:AspNetPager>

---前台代码如下:
<repeater>....绑定数据</repeater>
<div id="divBotom" class="fyz">
<webdiyer:AspNetPager ID="anpGnCargo" CssClass="anpager" CurrentPageButtonClass="cpb"
PageSize="10" runat="server" HorizontalAlign="Center" Width="100%" FirstPageText="首页"
LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" CustomInfoHTML="第%currentPageIndex%页/共%PageCount%页 每页%PageSize%条/共%RecordCount%条"
ShowPageIndexBox="Always" ShowCustomInfoSection="Right"
CustomInfoSectionWidth="250px" OnPageChanged="anpGnCargo_PageChanged" SubmitButtonClass="Button" SubmitButtonText="转 到" CurrentPageButtonPosition="Beginning">
</webdiyer:AspNetPager>
</div>

---后台
protected void InitDataBind() //前台控件绑定数据源,以及数据源获得方法。
{
string[] list = new string[] { " * ", " bshi ", " cust_id=21544", " Id ", " order by Id Desc ", anpGnCargo.CurrentPageIndex.ToString(), "10" };
SqlParameter[] ps ={
new SqlParameter("@TableList",list.GetValue(0) ), //需要显示的字段
new SqlParameter("@TableName",list.GetValue(1)), //表名
new SqlParameter("@SelectWhere",list.GetValue(2)), //where条件
new SqlParameter("@SelectOrderId",list.GetValue(3)), //主键
new SqlParameter("@SelectOrder",list.GetValue(4)), //排序条件
new SqlParameter("@intPageNo",list.GetValue(5)), //页号
new SqlParameter("@intPageSize",list.GetValue(6)) //每页多少行
};
DataTable dt = WuTong.DAL.DBHelper.RunProcedureTable("GetDataSet", ps);
Repeater1.DataSource = dt;
Repeater1.DataBind();

this.anpGnCargo.RecordCount = 0;//设置查询所得的总的记录数
}


protected void anpGnCargo_PageChanged(object sender, EventArgs e) //控件的change事件
{
InitDataBind(); //在initDataBind()方法中,从数据库获取数据,及设置RecordCount的值
}
---备注:
(1),注:必须取得RecordCount值后CurrentPageIndex才允许赋值
(2), RecordCount 来计算显示所有数据需要的总页数,即 PageCount的值。后台中必须给RecordCount 赋值

 

@第二种使用方法,url中带页码数(http://help.chinawutong.com/ListMemberNews.aspx?pgid=2)

1,将下载到的dll和xml放入所在项目的bin目录中

2,aspx页面文件页首添加

3,前台代码如下(这里最重要的属性,EnableUrlRewriting=“true”;允许后台进行url重写,重写为带参数的url):

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

 

<webdiyer:AspNetPager ID="anpInterLine" CssClass="anpager" CurrentPageButtonClass="cpb"
                    PageSize="7" runat="server" HorizontalAlign="Center" Width="100%"  EnableUrlRewriting="true"
                    FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" CustomInfoHTML=" 第<font color='red'><b>%currentPageIndex%</b></font>页/共%PageCount%页   每页%PageSize%条/共%RecordCount%条"
                    ShowPageIndexBox="Always" ShowCustomInfoSection="Right" CustomInfoSectionWidth="250px" Style="text-align: left;"
                    OnPageChanged="anpInterLine_PageChanged" NumericButtonCount="8">
                </webdiyer:AspNetPager>

4,后台代码如下:

***重点:(这里设置url重写,作用是---对分页页号链接url重写): 

anpBjCity.UrlRewritePattern = "/107.html?pid={0}&i=%i%&w=%w%&";  //解决问题,i和w的关联问题。其中w就是Request.QueryString["w"],i就是Request.QueryString["i"],pid={0}表示当前索引页的序号,其中{0}就是int pgid=Convert.ToInt32(Request.QueryString["pid"]),anpBjCity.CurrentPageIndex = pgid;设置的就是显示页的索引号

---可以这样拼接url重写地址(参数加变量值):anpBjCity.UrlRewritePattern = "/107.html?pid={0}&i=" + service_item_choose + "&w=" + bj_choose_pro + "-" + bj_choose_city + "-" + bj_choose_area + "&c=" + com_name + "&a=" + address;  //用变量值进行url拼接

(1),

public int pgid = 1; //注意这里一定要声明和初始化pgid的值,下边 pgid={0}中占位符的内容,就是pgid替换掉的。

protected void Page_Load(object sender, EventArgs e)
    {

//类别列表
            this.anpInterLine.UrlRewritePattern = "ListMemberNews.aspx?pgid={0}"; //anpInterLine是AspNetPager控件的id。这里必须加上url重写。

PageBind(); //绑定数据

.....其它代码省略!!!其它设置方法同上

  }

(2),

protected void anpInterLine_PageChanged(object sender, EventArgs e)  //分页控件,点击分页序号时触发的改变事件
    {
        this.anpInterLine.CurrentPageIndex = pgid;  //CurrentPageIndex参数是获取或设置当前显示页的索引
        PageBind();
    }

(3), public void PageBind()  //数据绑定方法
    {

anpInterLine.UrlRewritePattern = "ListMemberNews.aspx?keys=" + Keys + "" + "&pgid={0}"; //anpInterLine是AspNetPager控件的id。这里必须加上url重写

.....其它代码省略!!!其它设置方法同上

    this.anpInterLine.RecordCount =Convert.ToInt32(dt.Rows[0]["count"]); //RecordCount获取或设置需要分页的所有记录总数,分页控件根据这个数量进行分页计算。 

  }