AspNetPager分页改怎么采集

AspNetPager分页改怎么采集,第1张

分页是Web应用程序中最常用到的功能之一,在ASPNET中,虽然自带了一个可以分页的DataGrid(aspnet 11)和GridView(aspnet 20)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,而且有时候我们需要对DataList和Repeater甚至自定义数据绑定控件进行分页,手工编写分页代码不但技术难度大、任务繁琐而且代码重用率极低,因此分页已成为许多ASPNET程序员最头疼的问题之一。

今天闲来无事就学习学习了aspNetPager分页控件的用法:

AspNetPager针对ASPNET分页控件的不足,提出了与众不同的解决aspnet中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现分页导航功能的地方,如为GridView、DataList以及Repeater等数据绑定控件实现分页、呈现自定义的分页数据以及制作浏览程序等,因为AspNetPager控件和数据是独立的,因此要分页的数据可以来自任何数据源,如SQL Server、Oracle、Access、mysql、DB2等数据库以及XML文件、内存数据或缓存中的数据、文件系统等等。

1首先下载aspnetpager控件,我这儿的版本是6000 点击下载

2把控件加到项目中(添加自定义控件的方法),并把它拖放到页面上:

<webdiyer:AspNetPager ID="AspNetPager1" runat="server"

AlwaysShow="True" //总是显示分页控件,即使要分页的数据只有一页

OnPageChanged="AspNetPager1_PageChanged" //分页发生改变时触发事件

UrlPaging="true" //通过URL传递分页信息的方式来分页。如果设为true,禁用ViewState也能达到效果。如果设置为false,禁用了viewstate则无法实现分页

NumericButtonTextFormatString="[{0}]" //页索引数字显示的格式

ShowCustomInfoSection="Left"> //显示当前页和总页数信息,默认值不显示,为left则将显示在页索引前,为right则为页索引后 </webdiyer:AspNetPager>

3Page_Load事件:

protected void Page_Load(object sender, EventArgs e)

{

if (!PageIsPostBack)

{

BindGridView();

}

}

BindGridView方法如下:

public void BindGridView()

{

string sql = "select from gw_newsletter_group";//自定义的SQL语句

int recordcount;

DataSet ds = GetPage(sql, thisAspNetPager1CurrentPageIndex, thisAspNetPager1PageSize,out recordcount);

thisAspNetPager1RecordCount = recordcount;

thisGridView1DataSource = ds;

thisGridView1DataBind();

AspNetPager1CustomInfoHTML = "记录总数:<b>" + AspNetPager1RecordCountToString() + "</b>";

AspNetPager1CustomInfoHTML += " 总页数:<b>" + AspNetPager1PageCountToString() + "</b>";

AspNetPager1CustomInfoHTML += " 当前页:<font color=\"red\"><b>" + AspNetPager1CurrentPageIndexToString() + "</b></font>";

}

其中的GetPage方法代码如下:(GetConnection()是返回一个SqlConnection对象)

/// <summary>

/// Get Data By CurrentPage

/// </summary>

/// <param name="sql">SQL</param>

/// <param name="currentPage">current Page</param>

/// <param name="pagesize">Page Size</param>

/// <param name="recordcount">Total Record</param>

/// <returns></returns>

public DataSet GetPage(string sql, int currentPage, int pagesize,out int recordcount)

{

SqlDataAdapter ada = new SqlDataAdapter(sql, GetConnection());

DataSet ds = new DataSet();

int startRow = (currentPage - 1) pagesize;

adaFill(ds, startRow, pagesize, "table");

recordcount = GetPageRecord(sql);

return ds;

}

GetPageRecord方法:(返回总的记录数)

public int GetPageRecord(string sql)

{

sql = SystemTextRegularExpressionsRegexReplace(sql, "ORDER BY", "");

sql = "select count() from (" + sql + ") as temp";

SqlCommand cmd = new SqlCommand(sql, GetConnection());

cmdConnectionOpen();

int recordcount = (int)cmdExecuteScalar();

return recordcount;

}

这里注意要去掉”Order By“的字符串(聚合函数不能和"ORDER BY"连用)

4另外:还有个事件:

protected void AspNetPager1_PageChanged(object sender, EventArgs e)

{

BindGridView();

}

给你提供两种思路:

1你要取第二页,也就就是6-10,你可以先用top 10 ,取出前10个,然后desc倒序,再取出top 5

再倒序,这样就取出6-10个;

比如:select top 5 from (select top 10 from table_1 desc) t desc

2sqlserver 和oracle都有row_number() 这样的列,就是你取出的结果集给你多加一个列,你按row_number()去结果集也行。

比如:with table001 as (select row_number() over (order by Qid) as row_number , from ( "+sql+") k) select from table001 where row_number>= and row_number<= order by Qid

这个是我之前项目中的sql语句。你参考一下,作用就是 取( "+sql+") 中的sql 中的两个?之间的数据

---------------------------

你要取页数,可以用第二个思路,pk不一定是连续,可能有些数据给删除;

但是查询出来的结果集加上的row_number(),肯定是连续,

row_number%5==0;page = row_number/5

row_number%5!=0;page = row_number/5+1

easyui layout

var width = $(window)width()-80;

var height = $(window)height()-120;

stView_layout = $('#stView_layout')layout({

width: width,

height: height

});

station_view = $('#stationView')window({

title: '测站导航',

left:50,

top:80,

width: width,

modal: false,

shadow: false,

closed: true,

height: height,

onResize:function(w,h){

if(stView_treegrid){

stView_treegridtreegrid({

width:w-20,

height:h-260

});

}

}

});

# -- coding: utf-8 --

from pyquery import PyQuery as pq

import urllib

import urllib2

import threading

class Spider(threadingThread):

"""

A Python Spider

"""

def __init__(self, ad=''):

threadingThread__init__(self)

self__viewstate = ''

self__Url = '' #要访问的地址

self__Total =0

def run(self):

selffirstCollect()

def firstCollect(self):

"""

"""

headers = {

"Accept": "text/html,application/xhtml+xml,application/xml;q=09,/;q=08",

"Referer": "",#有些加入了来路判断,那这个就是必需要加的了

"Accept-Language": "zh-cn",

"Content-Type": "application/x-> #如果有其它条件请在这里添加,这个用>

有两种方法:

1使用数据库,也就是使用SQL来实现。这部分,你网上一搜一大堆。所以,这里不回答了。

2如果你使用的framework是大于NET35以上的,那么,非常简单,使用linq即可。

效果图:

代码:

        private DataTable dt = new DataTable();

        private int i = 0;

        private void Form1_Load(object sender, EventArgs e)

        {

            dtColumnsAdd("id");

            dtColumnsAdd("name");

            for (int i = 0; i < 10; i++)

            {

                dtRowsAdd(iToString(), "A" + iToString());

            }

            btnNextPerformClick();

        }

        private void btnNext_Click(object sender, EventArgs e)

        {

            var query = from q in dtAsEnumerable()

                        where ConvertToInt32(q["id"]) >= 2  i && ConvertToInt32(q["id"]) <= 2  i + 1

                        select q;

            dataGridView1DataSource = queryAsDataView();

            i++;

        }

不知道你的分页是在数据库分页还是在客户端页面中分页。

不管怎么分页,通用的方法是,把每页要显示的 条数传给后台,重新 *** 作数据库,读取你要获取的那一条数据。

比如,库中有200条数据,每页显示20条,那么首页显示的是数据库中的第1-20条。

select from table where rownum <= 20 order by rownum;

第二页显示的是

select from (select a,rownum pxid from table a order by pxid) t where tpxid <= 20 and tpxid >10;

第一页的最后一条记录就是

select from (select a,rownum pxid from table a order by pxid) t where tpxid = 20;

希望对你有帮助。

暂时就这么多吧,不明白的地方可以追问。

以上就是关于AspNetPager分页改怎么采集全部的内容,包括:AspNetPager分页改怎么采集、关于java 分页取出数据所在页的页数。、easyui datagrid 分页后获取所有页面数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9470192.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存