查看: 6615|回复: 2
打印 上一主题 下一主题

介绍如何使用SqlPager分页控件

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-26 10:57:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
  SqlPager分页控件是一个多功能灵活的分页控件,原理是利用了PagedDataSource()数据源进行分页处理,现此控件已集成于Winson.Framework框架里(以下简称WF),同时也使用了WF框架里的数据库低层操作语句,因此同时也可以支持多种数据库
   
    一、主要功能:
  1、支持AJAX分页,也可设置后台Post模式
  2、支持多种分页按钮样式,同时也可以自定义按钮样式
  3、支持一次性读取所有数据,或者只读取当前页面数据进行分页
  4、可对GridView、Repeater、BaseDataList、ListControl等数据源控件进行绑定处理
  5、支持直接在页面写SQL语句读取数据,或者在后台设置自定义数据源进行绑定
  6、可对分页数据指定排序字段
  7、完全开源,可灵活修改,呵呵
   
   
    二、基本使用:
  1、新在页面顶部插入以下代码:
  1. <%@ Register Assembly="Winson.WControls" Namespace="Winson.SqlPager" TagPrefix="SqlPager" %>  
复制代码
2、在需要放置分页控件的地方,插入以下代码:
  1.   <SqlPager:SqlPager ID="SqlPager1" runat="server" ControlToPaginate="GridView1" Width="700"
  2.    ItemsPerPage="4" BorderStyle=Dotted BackColor="#ffffff" PagerStyle=CustomAndNumeric
  3.    FirstButton="第一页" PrveButton="上一页" NextButton="下一页" LastButton="最后一页"
  4.    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,如下代码:
  1.   SqlPager1.UseCustomDataSource = true;
  2.    SqlPager1.CustomDataSource = DBOP.ExecuteDataset("select * from Employees ", "ds");
  3.    SqlPager1.DataBind();
复制代码
以上方式只能在后台执行。需要注意的是,不管哪种方式,最后都必须在后台调用DataBind()方法。
   
    三、高级应用
   
   1、使用AJAX分页:
     本控件支持AJAX分页,但还必须写一些客户端的代码,相关的客户端代码我已在DEMO里有啦,具体可以打开PagerDemo.aspx文件查看,在需要分页的页面上添加以下JS代码:
  1.   function setPageTo(pageIndex)
  2.    {
  3.    var context=document.getElementById("listDIV");
  4.    context.innerHTML="数据加载中";
  5.    var arg=pageIndex;
  6.    <%= ClientScript.GetCallbackEventReference(this, "arg", "onCallServerComplete", "context")%>;
  7.    }
  8.    
  9.    function onCallServerComplete(result,context)
  10.    {
  11.    context.innerHTML=result;
  12.    }  
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
2#
 楼主| 发表于 2007-9-26 10:57:39 | 只看该作者
台州网址导航
然后在后台添加相应的AJAX方法,建议使用我DEMO里的方式,将这些代码添加到一个基类页面里,然后各页面继承来用,请看我的BasePage.cs文件,即以下代码:
  1.   
  2.   Ajax分页处理#region Ajax分页处理

  3.    //引发回调事件处理
  4.    public void RaiseCallbackEvent(string eventArgument)
  5.    {
  6.    serverReturn = eventArgument;
  7.    }
  8.    
  9.    //回传回调结果
  10.    public string GetCallbackResult()
  11.    {
  12.    return PageChange(serverReturn);
  13.    }
  14.    /**//**//**////  
  15.    /// 执行分页操作
  16.    ///  
  17.    /// 新页面的索引
  18.    /// 需显示的页面数据
  19.    private string PageChange(string newIndex)
  20.    {
  21.    int newPageIndex = int.Parse(newIndex);
  22.    SqlPagerBase.GoToPage(newPageIndex);
  23.    return GetRenderCode();
  24.    }
  25.    
  26.    /**//**//**////  
  27.    /// 将读取的数据呈现在客户端
  28.    ///  
  29.    ///  
  30.    private string GetRenderCode()
  31.    {
  32.    StringWriter writer1 = new StringWriter(System.Globalization.CultureInfo.InvariantCulture);
  33.    HtmlTextWriter writer2 = new HtmlTextWriter(writer1);
  34.    
  35.    if (GridViewBase != null)
  36.    {
  37.    GridViewBase.Visible = true;
  38.    GridViewBase.RenderControl(writer2);
  39.    }
  40.    else if (RepeaterBase != null)
  41.    {
  42.    RepeaterBase.Visible = true;
  43.    RepeaterBase.RenderControl(writer2);
  44.    }
  45.    else if (DataListBase != null)
  46.    {
  47.    DataListBase.Visible = true;
  48.    DataListBase.RenderControl(writer2);
  49.    }
  50.    else if (ListBase != null)
  51.    {
  52.    ListBase.Visible = true;
  53.    ListBase.RenderControl(writer2);
  54.    }
  55.    SqlPagerBase.RenderControl(writer2);
  56.    writer2.Flush();
  57.    writer2.Close();
  58.    return writer1.ToString();
  59.    }
  60.    #endregion
复制代码
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
3#
 楼主| 发表于 2007-9-26 10:58:06 | 只看该作者
台州网址导航
注意,如果你要将以上代码放到独立页面,必须要先继承System.Web.UI.ICallbackEventHandler接口!
   
  编写完以上代码后,再需将SqlPager里的PagerStyle属性设置为以Ajax开头的类型,以下是PagerStyle属性各参数的说明:
  1.    **/**/////  
  2.    /// 页面样式设置
  3.    ///  
  4.    public enum PagerStyle
  5.    {
  6.    /**//**//**////  
  7.    /// 按钮样式为上下页箭头
  8.    ///  
  9.    NextPrev,
  10.    /**//**//**////  
  11.    /// 按钮样式来下拉框页码
  12.    ///  
  13.    NumericPages,
  14.    /**//**//**////  
  15.    /// 按钮和下拉框页码一起显示
  16.    ///  
  17.    NextAndNumeric,
  18.    /**//**//**////  
  19.    /// 自定义样式,可自定文本
  20.    ///  
  21.    CustomStyle,
  22.    /**//**//**////  
  23.    /// 自定义样式,可自定文本,同时显示下拉页码
  24.    ///  
  25.    CustomAndNumeric,
  26.    /**//**//**////  
  27.    /// 无刷新箭头式按钮
  28.    ///  
  29.    AjaxNext,
  30.    /**//**//**////  
  31.    /// 无刷新箭头式按钮加下拉页码
  32.    ///  
  33.    AjaxNextAndNum,
  34.    /**//**//**////  
  35.    /// 无刷新下拉框按钮
  36.    ///  
  37.    AjaxNumeric,
  38.    /**//**//**////  
  39.    /// 自定义无刷新分页
  40.    ///  
  41.    AjaxCustomPages,
  42.    /**//**//**////  
  43.    /// 自定义无刷新和下拉框页码
  44.    ///  
  45.    AjaxCustomAndNumeric
  46.    }  
复制代码
    2、配合TabControls使用:
     TabControls控件是从Discuz!DNT论坛里抽取出来的,感觉效果挺好,呵,就是类似一个Tab的效果,可以相互切换各自内容,而且此控件里可放任何其他控件或者代码,只是如果放其他的数据源控件,会有些问题,子控件的一些事件会触发不了,具体我也不知道什么原因:(
   
    同样,当时将此分页控件加到Tab里时,也出现了不少问题,不过现在已修复好这些问题了,但如需与Tab配合使用,现也只能使用AJAX模式!
   
     如需在Tab下使用SqlPager控件,只需设置以下2个参数后即可以了
   
  UseTabPager="true"
  PagingMode="NonCached"
  至于其他更多参数设置,请自行查看WF类库文档,均有说明了
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表