分类:
2008-10-13 17:20:13
Prev Next
Page 1 Page 1 Page 1 Page 1 Page 1 Page 1 Page 1 Page 1 Page 1
<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Register TagPrefix="msdn" Namespace="MSDN"
Assembly="ClientPageDataGrid" %>
Property Name | Description | Type | Read | Write | Default |
---|---|---|---|---|---|
AllowClientPaging | 启用或禁用客户端分页 | bool | True | ||
ClientPageSize | 获取或设置每页显示的记录数 | int | 10 | ||
ClientPageCount | 获取当前页数 | int | N/A | ||
ClientCurrentPageIndex | 获取或设置当前页号 | int | 0 |
protected override void Render (HtmlTextWriter writer) { if (AllowClientPaging && Items.Count > 0) { for (int i=0; itag 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 atag writer.RenderEndTag (); } // Restore all DataGrid items to the visible state ShowItems (0, Items.Count - 1); } else { base.Render (writer); } }
...
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; i0) { 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 Methodpublic 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---------------------