热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » MySQL/MSSQL编程 » 介绍如何使用SqlPager分页控件

介绍如何使用SqlPager分页控件

论坛链接
  • 介绍如何使用SqlPager分页控件
  • 发布时间:2007-09-26 10:57:28    浏览数:6630    发布者:webptr    设置字体【   
  SqlPager分页控件是一个多功能灵活的分页控件,原理是利用了PagedDataSource()数据源进行分页处理,现此控件已集成于Winson.Framework框架里(以下简称WF),同时也使用了WF框架里的数据库低层操作语句,因此同时也可以支持多种数据库

   一、主要功能:
1、支持AJAX分页,也可设置后台Post模式
2、支持多种分页按钮样式,同时也可以自定义按钮样式
3、支持一次性读取所有数据,或者只读取当前页面数据进行分页
4、可对GridView、Repeater、BaseDataList、ListControl等数据源控件进行绑定处理
5、支持直接在页面写SQL语句读取数据,或者在后台设置自定义数据源进行绑定
6、可对分页数据指定排序字段
7、完全开源,可灵活修改,呵呵


   二、基本使用:
1、新在页面顶部插入以下代码:<%@ Register Assembly="Winson.WControls" Namespace="Winson.SqlPager" TagPrefix="SqlPager" %> 2、在需要放置分页控件的地方,插入以下代码: <SqlPager:SqlPager ID="SqlPager1" runat="server" ControlToPaginate="GridView1" Width="700"
ItemsPerPage="4" BorderStyle=Dotted BackColor="#ffffff" PagerStyle=CustomAndNumeric
FirstButton="第一页" PrveButton="上一页" NextButton="下一页" LastButton="最后一页"
PagingMode="Cached" > 基本参数说明:


ID:即本分页控件的自身ID
ControlToPaginate:分页控件需绑定的数据源控件的ID,本例中数据源控件为GridView
BorderStyle:分页控件边框样式,本例中为虚线
PagerStyle:即分页按钮的样式,此为一个枚举参数,同时也是设置是否使用AJAX的参数,以下将会有详细说明
PagingMode:是否使用Cached,如果使用NonCached则只读取对当前页面数据,如为Cached,则一次性读取所有数据然后进行分页,建议数据量少时使用NonCached,但如果想与Tab控件配合使用,则必须要使用Cached模式

以下为分页按钮的自定义样式,只有当PagerStyle设置为自定义样式时才生效
FirstButton:第一页的按钮样式
PrveButton:上一页的按钮样式
NextButton:下一页的按钮样式
LastButton:最后一页的按钮样式


3、以上代码配置好后,即可在后台为分页控件设置数据源,当然在前台也可以直接用参数设置

设置数据源有2种方式,一种是直接在前台使用SelectCommand参数进行设置,如将以下语句直接加到控件标签里

<SqlPager:SqlPager SelectCommand = "select * from Employees" ></SqlPager:SqlPager>
另一种方式是可以使用自定义的数据源,如DataSet,但在使用自定义数据源之前,需将参数UseCustomDataSource设置为true,如下代码: SqlPager1.UseCustomDataSource = true;
SqlPager1.CustomDataSource = DBOP.ExecuteDataset("select * from Employees ", "ds");
SqlPager1.DataBind(); 以上方式只能在后台执行。需要注意的是,不管哪种方式,最后都必须在后台调用DataBind()方法。

   三、高级应用

   1、使用AJAX分页:
  本控件支持AJAX分页,但还必须写一些客户端的代码,相关的客户端代码我已在DEMO里有啦,具体可以打开PagerDemo.aspx文件查看,在需要分页的页面上添加以下JS代码: function setPageTo(pageIndex)
{
var context=document.getElementById("listDIV");
context.innerHTML="数据加载中";
var arg=pageIndex;
<%= ClientScript.GetCallbackEventReference(this, "arg", "onCallServerComplete", "context")%>;
}

function onCallServerComplete(result,context)
{
context.innerHTML=result;
}
      然后在后台添加相应的AJAX方法,建议使用我DEMO里的方式,将这些代码添加到一个基类页面里,然后各页面继承来用,请看我的BasePage.cs文件,即以下代码:
Ajax分页处理#region Ajax分页处理

//引发回调事件处理
public void RaiseCallbackEvent(string eventArgument)
{
serverReturn = eventArgument;
}

//回传回调结果
public string GetCallbackResult()
{
return PageChange(serverReturn);
}
/**//**//**////
/// 执行分页操作
///
/// 新页面的索引
/// 需显示的页面数据
private string PageChange(string newIndex)
{
int newPageIndex = int.Parse(newIndex);
SqlPagerBase.GoToPage(newPageIndex);
return GetRenderCode();
}

/**//**//**////
/// 将读取的数据呈现在客户端
///
///
private string GetRenderCode()
{
StringWriter writer1 = new StringWriter(System.Globalization.CultureInfo.InvariantCulture);
HtmlTextWriter writer2 = new HtmlTextWriter(writer1);

if (GridViewBase != null)
{
GridViewBase.Visible = true;
GridViewBase.RenderControl(writer2);
}
else if (RepeaterBase != null)
{
RepeaterBase.Visible = true;
RepeaterBase.RenderControl(writer2);
}
else if (DataListBase != null)
{
DataListBase.Visible = true;
DataListBase.RenderControl(writer2);
}
else if (ListBase != null)
{
ListBase.Visible = true;
ListBase.RenderControl(writer2);
}
SqlPagerBase.RenderControl(writer2);
writer2.Flush();
writer2.Close();
return writer1.ToString();
}
#endregion
      注意,如果你要将以上代码放到独立页面,必须要先继承System.Web.UI.ICallbackEventHandler接口!

编写完以上代码后,再需将SqlPager里的PagerStyle属性设置为以Ajax开头的类型,以下是PagerStyle属性各参数的说明: **/**/////
/// 页面样式设置
///
public enum PagerStyle
{
/**//**//**////
/// 按钮样式为上下页箭头
///
NextPrev,
/**//**//**////
/// 按钮样式来下拉框页码
///
NumericPages,
/**//**//**////
/// 按钮和下拉框页码一起显示
///
NextAndNumeric,
/**//**//**////
/// 自定义样式,可自定文本
///
CustomStyle,
/**//**//**////
/// 自定义样式,可自定文本,同时显示下拉页码
///
CustomAndNumeric,
/**//**//**////
/// 无刷新箭头式按钮
///
AjaxNext,
/**//**//**////
/// 无刷新箭头式按钮加下拉页码
///
AjaxNextAndNum,
/**//**//**////
/// 无刷新下拉框按钮
///
AjaxNumeric,
/**//**//**////
/// 自定义无刷新分页
///
AjaxCustomPages,
/**//**//**////
/// 自定义无刷新和下拉框页码
///
AjaxCustomAndNumeric
}    2、配合TabControls使用:
   TabControls控件是从Discuz!DNT论坛里抽取出来的,感觉效果挺好,呵,就是类似一个Tab的效果,可以相互切换各自内容,而且此控件里可放任何其他控件或者代码,只是如果放其他的数据源控件,会有些问题,子控件的一些事件会触发不了,具体我也不知道什么原因:(

  同样,当时将此分页控件加到Tab里时,也出现了不少问题,不过现在已修复好这些问题了,但如需与Tab配合使用,现也只能使用AJAX模式!

  如需在Tab下使用SqlPager控件,只需设置以下2个参数后即可以了

UseTabPager="true"
PagingMode="NonCached"
至于其他更多参数设置,请自行查看WF类库文档,均有说明了
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理