| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- /**
- * Project : Mono
- * Namespace : System.Web.UI.MobileControls
- * Class : PagedControl
- * Author : Gaurav Vaish
- *
- * Copyright : 2003 with Gaurav Vaish, and with
- * Ximian Inc
- */
- using System.Web.UI;
- using System.Web.Mobile;
- namespace System.Web.UI.MobileControls
- {
- public abstract class PagedControl : MobileControl
- {
- private static readonly object LoadItemsEvent = new object();
- private int itemCount = 0;
- private ItemPager itemPager;
- private bool pagingCharsChanged = false;
- protected PagedControl()
- {
- }
- public event LoadItemsEventHandler LoadItems
- {
- add
- {
- Events.AddHandler(LoadItemsEvent, value);
- }
- remove
- {
- Events.RemoveHandler(LoadItemsEvent, value);
- }
- }
- private int PagerItemIndex
- {
- get
- {
- return (itemPager == null ? 0 : itemPager.ItemIndex);
- }
- }
- private int PagerItemCount
- {
- get
- {
- return (itemPager == null ? InternalItemCount :
- itemPager.ItemCount);
- }
- }
- protected abstract int InternalItemCount { get; }
- public int FirstVisibleItemIndex
- {
- get
- {
- if(!IsCustomPaging && EnablePagination)
- return PagerItemIndex;
- return 0;
- }
- }
- private bool IsCustomPaging
- {
- get
- {
- return (itemCount > 0);
- }
- }
- public int ItemCount
- {
- get
- {
- return itemCount;
- }
- set
- {
- itemCount = value;
- }
- }
- public int ItemWeight
- {
- get
- {
- return ControlPager.DefaultWeight;
- }
- }
- public int ItemsPerPage
- {
- get
- {
- object o = ViewState["ItemsPerPage"];
- if(o != null)
- return (int)o;
- return 0;
- }
- set
- {
- ViewState["ItemsPerPage"] = value;
- }
- }
- public int VisibleItemCount
- {
- get
- {
- if(IsCustomPaging || !EnablePagination)
- return InternalItemCount;
- return PagerItemCount;
- }
- }
- public override int VisibleWeight
- {
- get
- {
- if(VisibleItemCount == -1)
- return 0;
- return VisibleItemCount * GetItemWeight();
- }
- }
- private int GetItemWeight()
- {
- int iw = Adapter.ItemWeight;
- if(iw == ControlPager.UseDefaultWeight)
- return ItemWeight;
- return iw;
- }
- protected virtual void OnLoadItems(LoadItemsEventArgs e)
- {
- LoadItemsEventHandler lieh = (LoadItemsEventHandler)(Events[LoadItemsEvent]);
- if(lieh != null)
- lieh(this, e);
- }
- private void OnLoadItems()
- {
- OnLoadItems(new LoadItemsEventArgs(PagerItemIndex, PagerItemCount));
- }
- protected override void OnPageChange(int oldPageIndex, int newPageIndex)
- {
- pagingCharsChanged = true;
- }
- protected override void OnPreRender(EventArgs e)
- {
- if(IsCustomPaging)
- {
- if(!Page.IsPostBack || Form.PaginationStateChanged
- || pagingCharsChanged || !IsViewStateEnabled())
- {
- OnLoadItems();
- }
- }
- base.OnPreRender(e);
- }
- private bool IsViewStateEnabled()
- {
- Control ctrl = this;
- while(ctrl != null && ctrl.EnableViewState)
- {
- ctrl = ctrl.Parent;
- }
- return (ctrl == null);
- }
- public override void PaginateRecursive(ControlPager pager)
- {
- int ic = 0;
- int ipp = 0;
- if(IsCustomPaging || InternalItemCount == 0)
- ic = ItemCount;
- ipp = ItemsPerPage;
- itemPager = pager.GetItemPager(this, ic, ipp, GetItemWeight());
- }
- }
- }
|