Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468089
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 17:20:13

PagingTable.html

  
    
  
  
    
Page 1Page 1Page 1
Page 1Page 1Page 1
Page 1Page 1Page 1
Prev   Next

ServerPaging.aspx
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>


  
    

ClientPaging.aspx
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Register TagPrefix="msdn" Namespace="MSDN"
  Assembly="ClientPageDataGrid" %>


  
    
<msdn:ClientPageDataGrid RunAt="server" ID="MyDataGrid" AutoGenerateColumns="false" CellPadding="2" Width="100%" Font-Name="Verdana" Font-Size="8pt" ClientPageSize="16" AllowClientPaging="true">

ClientPageDataGrid Public Properties

Property Name Description Type Read Write Default
AllowClientPaging 启用或禁用客户端分页 bool True
ClientPageSize 获取或设置每页显示的记录数 int 10
ClientPageCount 获取当前页数 int   N/A
ClientCurrentPageIndex 获取或设置当前页号 int 0

ClientPageDataGrid's Render Method
protected override void Render (HtmlTextWriter writer)
{
    if (AllowClientPaging && Items.Count > 0) {
        for (int i=0; i tag
            writer.AddAttribute (HtmlTextWriterAttribute.Id,
                ClientID + "_page" + i.ToString ());
            writer.AddAttribute (HtmlTextWriterAttribute.Style,
                i == ClientCurrentPageIndex ?
                    "display: block" : "display: none");
            writer.RenderBeginTag (HtmlTextWriterTag.Div);

            // Render a page inside the 
ShowItems (i * ClientPageSize, Math.Min ((i * ClientPageSize) + ClientPageSize - 1, Items.Count - 1)); UpdatePager (i); base.Render (writer); // Output a
tag writer.RenderEndTag (); } // Restore all DataGrid items to the visible state ShowItems (0, Items.Count - 1); } else { base.Render (writer); } }

HTML Generated by ClientPageDataGrid
...

UpdatePager Method
void UpdatePager (int page)
{
    // Get a reference to the pager
    TableCell pager = null;
    for (int i = Controls[0].Controls.Count - 1; i >=0; i—) {
        if (((DataGridItem) Controls[0].Controls[i]).ItemType ==
            ListItemType.Pager) {
            pager = (TableCell) Controls[0].Controls[i].Controls[0];
            break;
        }
    }

    if (PagerStyle.Mode == PagerMode.NextPrev) {
        // Implement a client-side Next-Prev pager
        pager.Controls.Clear ();
        pager.Controls.Add (CreatePrevPageControl (page));
        pager.Controls.Add (new LiteralControl (" "));
        pager.Controls.Add (CreateNextPageControl (page));
    }
    else if (PagerStyle.Mode == PagerMode.NumericPages) {
        pager.Controls.Clear ();

        if (ClientPageCount <= PagerStyle.PageButtonCount) {
            // Implement a "1 2 3"-style numeric pager
            for (int i=0; i 0) {
                pager.Controls.Add (CreatePrevSectionControl (page,
                    section));
                pager.Controls.Add (new LiteralControl (" "));
            }

            // Add page numbers
            int start = section * PagerStyle.PageButtonCount;
            int end = Math.Min (start + PagerStyle.PageButtonCount -1,
                ClientPageCount - 1);

            for (int i=start; i

DataBind Method
public override void DataBind ()
{
    if (AllowClientPaging && DataSource != null) {
        object OriginalDataSource = null;
                
        // If the data source is a DataReader, convert
        // it into a DataSet
        if (DataSource is IDataReader) {
            OriginalDataSource = DataSource;
            DataSource = DataSetFromDataReader
                ((IDataReader) DataSource);
        }
                
        // Bind once with paging disabled (and ItemCreated
        // and ItemDataBound events suppressed) to get an
        // item count
       _SuppressEvents = true;
        AllowPaging = false;
        base.DataBind ();
       _SuppressEvents = false;
                
        // Bind again with paging enabled to create a DataGrid
        // containing all items with a pager at the bottom
        PageSize = Items.Count;
        AllowPaging = true;
        base.DataBind ();
                
        // Restore the original data source
        if (OriginalDataSource != null)
            DataSource = OriginalDataSource;
                
        // Restore the current page index from postback data
        // if it hasn't been restored already
        if (Page.IsPostBack && AllowClientPaging &&
            !_RestoreCurrentPageIndexCalled)
            RestoreCurrentPageIndex ();
    }
    else {
        base.DataBind ();
    }
}


--------------------next---------------------

阅读(179) | 评论(0) | 转发(0) |
0

上一篇:欢迎阅读我的文章

下一篇:Figures

给主人留下些什么吧!~~