返回首页

{A}简介
DataPager的是一个自定义的控制,重视数据控件(如一个GridView,ListView中,DataList中,中继器),允许分页控制。
将DataPager本身显示quot; Firstquot;,"Nextquot;,"Previousquot;和"; Lastquot";按钮(或数值的网页或自定义的组合)NBSP,你按一下按钮寻呼机提供和你数据控制会自动通过使用SQL Paging.nbsp的数据页;
只需拖放的DataPager和一ornbsp;两行代码在您的aspx.cs页面。{S0}用户控制的问题与事件处理
用户控件有很多好处??他们让你抽象的一组常用的控件到一个单一的,可重复使用的控制。有时,会有一个企业需要通过用户​​之间的控制和其包含的ASP.NET网页的数据。例如,您可能有一个地址控制,在加载页面时,它设置地址控制的街道,城市,和国有资产。然而,当它足够简单的aspx页面触发一个用户控件的方法,它不是简单的用户控制,相反其包含的页面的触发方法。背景
SQL分页意味着它实现了超高效数据分页,2005年在SQL中使用新的ROW_NUMBER()(这是免费的SQL Express版本最多支持)和新的ASP.NET 2.0的GridView / ObjectDataSource的controls.nbsp;
示例SQL Server的分页查询:

With RecordEntries as (

		SELECT ROW_NUMBER() OVER (ORDER BY [OrderByField) as Row, 

		FROM [TableName]

	)

Select * FROM RecordEntries

WHERE Row between @startRowIndex and @endRowIndex
使用代码
当你把aspx页面的控制,那么你可以设置DataPager控件的下列属性:
现在,添加以下行。aspx.cs文件中的代码:
代表最终需求,为用户控件能够调用一个方法,即我们希望通过它的方法参考,并让它调用该方法就其本身而言。这正是一个代表让我们做。根据MSDN中,委托quot;是一种数据结构,是指一个静态方法或一个类的实例,一个实例方法,class.quot;
换句话说,你可以指定一个方法引用到一个委托,并通过类似的,你如何通过其他类型。我们将解决与记录导航器在介绍中提到的问题,我们的示例解决方案的问题。在这个例子中,有一个WebForm包含一个用户控制。在这种情况下用户控件包含两个属性,一个代表业务数据??作为一个整数索引。在webform一个BindGrid()方法来填充数据,然后填充页面适当控制。 WebForm中创建了一个委托,它是指BindGrid()方法,并传递该委托用户控件的委托型物业。每当使用者控制项的上一个或下一个按钮被点击,然后调用它,从选择用户控制(在这种情况下,只是指数)的数据值传递的委托。最后,在打开的委托触发父页面的BindGrid()方法。 技术实现
现在,我们有一个高层次的理解,我们想要做什么,让我们的代码。首先,我们要创建的用户控制。创建一个用户控件名为DataPager.ascx itnbsp添加以下两个属性(代码是非常自我解释):
{S2}
aspx.cs页面包含thenbsp;下面的代码:
程序的流程
在最初的WebForm负荷,相关的控制流开始的WebForm的Page_Load,并设置用户控件的属性。它只需要设置业务数据(如页面索引)第一次,因为这些数据是序列化和页的ViewState仍然存在。它设置后,每次回发委托财产,因为委托是不是默认情况下的ViewState序列化并保存。的WebForm的Page_Load后,用户控制的Page_Load被调用。这台默认的商业价值(存储在用户控件的属性),然后调用UpdatePageIndex()方法。
if (!IsPostBack)

        {

            BindGrid(1);

        }

        delPopulateData delPopulate = new delPopulateData(this.BindGrid);

        pagerApps.UpdatePageIndex = delPopulate;

这种方法更新用户控件的GUI反映的价值观,和然后从属性获取委托引用,并调用该方法,触发父页面上更新数据。当用户点击RecordIndex上一个或下一个按钮,他们更新适当的内部业务数据,然后调用UpdatePageIndex()方法,该方法更新父页面,只是前面所述。控制流几乎是相同的回传的吗??除了默认的业务数据不被复位。SQL服务器分页逻辑
下面的存储过程只返回那些通过使用参数的记录:
--EXEC [GetAppsDetails] 1,10

ALTER PROCEDURE [dbo].[GetAppsDetails] 

	@PageIndex INT,

	@RecordsPerPage INT

AS  

BEGIN  

SET NOCOUNT ON  

	Declare @startRowIndex INT;

	Declare @endRowIndex INT;

	set @endRowIndex = (@PageIndex * @RecordsPerPage);

	set @startRowIndex = (@endRowIndex - @RecordsPerPage) + 1;



	With RecordEntries as (

		SELECT ROW_NUMBER() OVER (ORDER BY A.APP_TYPE_ID ASC) as Row, _

		A.APP_TYPE_ID, 

		A.APP_TYPE_NAME,A.APP_STORE_ID,R.REVIEW_TITLE,R.AUTHOR_NAME,_

		R.REVIEW_DATE,

		R.REVIEW_RATING,R.REVIEW_TEXT FROM [dbo].[APP_TYPES] A

		INNER JOIN [CUSTOMER_APP_REVIEWS] R ON A.APP_TYPE_ID=R.APP_TYPE_ID

	)

	Select APP_TYPE_ID, APP_TYPE_NAME, APP_STORE_ID, REVIEW_TITLE, AUTHOR_NAME, 

	REVIEW_DATE, REVIEW_RATING, REVIEW_TEXT

	FROM RecordEntries

	WHERE Row between 

	@startRowIndex and @endRowIndex

	

	SELECT COUNT(*) FROM [dbo].[APP_TYPES] A

	INNER JOIN [CUSTOMER_APP_REVIEWS] R ON A.APP_TYPE_ID=R.APP_TYPE_ID

END 
摘要
用户控制Web应用程序提供了许多好处。这些优点的部分是一个WebForm和用户控件之间的数据传递两种方式。虽然是微不足道的数据传递给用户控制,用户控制传递回页面是没有的。但是,我们仍然可以解决这个页面实例化一个委托,并传递给用户控制,用户控制的能力上的需求触发父页面的方法。
如果没有数据源是否存在,然后DataPager的看起来像:的兴趣点
我会尝试开发一个不需要任何一行代码,像控制:
public delegate void delPopulateData(int myInt);

 delPopulateData delPopulate = new delPopulateData(this.BindGrid);

        pagerApps.UpdatePageIndex = delPopulate;
历史
如果你发现一些问题或错误,刚刚发表评论或丢弃我的电子邮件。如果你对此有何注意事项,让我知道,太使我没有重做你们的辛勤工作。请提供一个quot; Votequot;如果这将是有益的的。

回答

评论会员:希夫尚卡尔梅蒂 时间:2012/01/27
良好的工作{五}
评论会员:SunasaraImdadhusen 时间:2012/01/27
这是非常有益的和性能值得推广应用例如
评论会员:saxenaabhi6 时间:2012/01/27
感谢您的赞赏{中六} sunaSaRa Imdadhusen
91 99095 44184
评论会员:SunasaraImdadhusen 时间:2012/01/27
很好的控制... ...感谢分享
评论会员:游客 时间:2012/01/27
。SunasaraImdadhusen
!欢迎您sunaSaRa Imdadhusen
91 99095 44184
评论会员:NIRMALUPADHYAY 时间:2012/01/27
!7abetak
100
评论会员:SunasaraImdadhusen 时间:2012/01/27
!非常感谢你sunaSaRa Imdadhusen
91 99095 44184
评论会员:jayantbramhankar 时间:2012/01/27
我非常有用的,它在我的project.Keep
评论会员:游客 时间:2012/01/27
。SunasaraImdadhusen
感谢sunaSaRa Imdadhusen
91 99095 44184
评论会员:Anuj特里帕蒂 时间:2012/01/27
好文章
评论会员:SunasaraImdadhusen 时间:2012/01/27
感谢您宝贵的一票sunaSaRa Imdadhusen
91 99095 44184
评论会员:Anuj特里帕蒂 时间:2012/01/27
简单而有效。
这一切​​有关传呼。我已经书签,
评论会员:SunasaraImdadhusen 时间:2012/01/27
升值感谢!还请提供最好的2011年5月
条投票 sunaSaRa Imdadhusen
91 99095 44184
评论会员:Monjurul哈比卜 时间:2012/01/27
我已经这样做 ..事实上,我发现您的文章从该列表中只有{五}

就写这些智能的东西保持
评论会员:SunasaraImdadhusen 时间:2012/01/27
!只与你的赞赏和支持的可能,这将是


Imdadhusen sunaSaRa Imdadhusen
91 99095 44184
评论会员:ambarishtv 时间:2012/01/27
漂亮article.my 5
评论会员:游客 时间:2012/01/27
。SunasaraImdadhusen
感谢sunaSaRa Imdadhusen
91 99095 44184
评论会员:杜威 时间:2012/01/27
好介绍
评论会员:SunasaraImdadhusen 时间:2012/01/27
感谢 sunaSaRa Imdadhusen
91 99095 44184
评论会员:游客 时间:2012/01/27
的Shahriar伊克巴尔乔杜里
我有这个方法,我用分页选项之一,但我从来没有时间来运行任何性能测试

你已经做了在大表上的任何性能测试,或者你见过任何性能比较?

"好工作"
评论会员:游客 时间:2012/01/27
!SunasaraImdadhusen
号我没有测试与性能的任何情况。但你可能会增加在SQL方面的性能,使用视图和存储过程中的索引。

请不要让我知道,如果您有任何疑问。


Imdadhusen sunaSaRa Imdadhusen
91 99095 44184
评论会员:thatraja 时间:2012/01/27
尼斯后..看起来类似ExtJs.net,但我认为您的分页技术是多整齐...
评论会员:杜威 时间:2012/01/27
。感谢您的投票sunaSaRa Imdadhusen
91 99095 44184