Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / PagedControl.cs / 1305376 / PagedControl.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Collections; using System.ComponentModel; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Diagnostics; using System.Security.Permissions; namespace System.Web.UI.MobileControls { /* * Paged control. Abstract control class inherited by all classes * that are internally paginated. * * Copyright (c) 2000 Microsoft Corporation */ ///[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] public abstract class PagedControl : MobileControl { private static readonly Object EventLoadItems = new Object(); private const String _itemCountViewStateKey = "_!PagedControlItemCount"; private bool _pagingCharacteristicsChanged = false; int _lastItemIndexLoaded = -1; int _lastItemCountLoaded = -1; Pair _stateLoadItemsArgs = null; /// [ MobileCategory(SR.Category_Action), MobileSysDescription(SR.PagedControl_OnLoadItems) ] public event LoadItemsEventHandler LoadItems { add { Events.AddHandler(EventLoadItems, value); } remove { Events.RemoveHandler(EventLoadItems, value); } } private void OnLoadItems() { int index, count; if (_itemPager != null) { index = PagerItemIndex; count = PagerItemCount; } else { index = 0; count = ItemCount; } OnLoadItems(new LoadItemsEventArgs(index, count)); } /// protected virtual void OnLoadItems(LoadItemsEventArgs e) { if (LoadItemsHandler != null) { _lastItemIndexLoaded = e.ItemIndex; _lastItemCountLoaded = e.ItemCount; LoadItemsHandler(this, e); } } private bool IsCustomPaging { get { return ItemCount > 0; } } private LoadItemsEventHandler LoadItemsHandler { get { return (LoadItemsEventHandler)Events[EventLoadItems]; } } /// protected abstract int InternalItemCount { get; } /// [ Bindable(true), DefaultValue(0), MobileCategory(SR.Category_Paging), MobileSysDescription(SR.PagedControl_ItemCount) ] public int ItemCount { get { Object count = ViewState[_itemCountViewStateKey]; return count == null ? 0 : (int) count; } set { if (value < 0) { throw new ArgumentOutOfRangeException("ItemCount", SR.GetString(SR.PagedControl_ItemCountCantBeNegative, value)); } bool changed = (ItemCount != value); ViewState[_itemCountViewStateKey] = value; if (changed) { InternalItemCountChangedHandler(value); } ConditionalLoadItemsFromPersistedArgs(); } } // Allows special handling of set_ItemCount in derived class, // while maintaining API backward compatibility. internal virtual void InternalItemCountChangedHandler(int newItemCount) {} /// [ Bindable(true), DefaultValue(0), MobileCategory(SR.Category_Paging), MobileSysDescription(SR.PagedControl_ItemsPerPage) ] public int ItemsPerPage { get { object o = ViewState["ItemsPerPage"]; return (o != null) ? (int)o : 0; } set { if (value < 0) { throw new ArgumentOutOfRangeException("ItemsPerPage", SR.GetString(SR.PagedControl_ItemsPerPageCantBeNegative, value)); } ViewState["ItemsPerPage"] = value; } } /// protected virtual int ItemWeight { get { return ControlPager.DefaultWeight; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public int FirstVisibleItemIndex { get { return (IsCustomPaging || !EnablePagination) ? 0 : PagerItemIndex; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public int VisibleItemCount { get { return (IsCustomPaging || !EnablePagination) ? InternalItemCount : PagerItemCount; } } /// public override int VisibleWeight { get { // Paged control should count the weight as sum of its items int count = VisibleItemCount; if (count == -1) { return 0; // -1 means control not on the current page } else { return count * GetItemWeight(); } } } private ItemPager _itemPager; /// public override void PaginateRecursive(ControlPager pager) { int itemCount = IsCustomPaging ? ItemCount : InternalItemCount; int itemsPerPage = ItemsPerPage; _itemPager = pager.GetItemPager(this, itemCount, itemsPerPage, GetItemWeight()); } internal int GetItemWeight() { int weight = Adapter.ItemWeight; if (weight == ControlPager.UseDefaultWeight) { weight = ItemWeight; } return weight; } private int PagerItemIndex { get { return (_itemPager == null) ? 0 : _itemPager.ItemIndex; } } private int PagerItemCount { get { return (_itemPager == null) ? InternalItemCount : _itemPager.ItemCount; } } /// protected override void OnPageChange(int oldPageIndex, int newPageIndex) { _pagingCharacteristicsChanged = true; } /// protected override void OnPreRender(EventArgs e) { if (IsCustomPaging && IsVisibleOnPage(Form.CurrentPage) && (!Page.IsPostBack || Form.PaginationStateChanged || _pagingCharacteristicsChanged || !IsViewStateEnabled())) { OnLoadItems(); } base.OnPreRender(e); } internal override void SetControlPage(int page) { // Custom pagination being turned off. _itemPager = null; _pagingCharacteristicsChanged = true; base.SetControlPage(page); } private new bool IsViewStateEnabled() { for (Control ctl = this; ctl != null; ctl = ctl.Parent) { if (!ctl.EnableViewState) { return false; } } return true; } /// protected override Object SavePrivateViewState() { // If the base state is non-null, we always return a Pair with the base state as the // first item. Object baseState = base.SavePrivateViewState(); if (IsCustomPaging && IsTemplated && !IsViewStateEnabled() && _lastItemCountLoaded != -1) { return new Pair(baseState, new Pair(_lastItemIndexLoaded, _lastItemCountLoaded)); } if (baseState != null) { return new Pair(baseState, null); } // baseState is null return null; } /// protected override void LoadPrivateViewState(Object state) { Debug.Assert (state == null || state.GetType() == typeof(Pair), "If the base state is non-null, private viewstate should always be saved as a pair"); Pair statePair = state as Pair; if (statePair != null) { base.LoadPrivateViewState(statePair.First); _stateLoadItemsArgs = statePair.Second as Pair; ConditionalLoadItemsFromPersistedArgs(); } } // Loads items using view state pair in templated case where custom paging // on, view state off. In this special case, load items early as // possible to enable events to be raised. private void ConditionalLoadItemsFromPersistedArgs() { if (_stateLoadItemsArgs != null && IsCustomPaging && IsTemplated && !IsViewStateEnabled()) { OnLoadItems( new LoadItemsEventArgs((int) _stateLoadItemsArgs.First, (int) _stateLoadItemsArgs.Second)); _stateLoadItemsArgs = null; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GenericIdentity.cs
- WebPartManager.cs
- SchemaMapping.cs
- XamlFilter.cs
- ThreadStaticAttribute.cs
- HMACSHA512.cs
- DataColumnMapping.cs
- ContextProperty.cs
- Viewport2DVisual3D.cs
- CommentEmitter.cs
- DirectionalLight.cs
- CurrencyWrapper.cs
- DigitalSignature.cs
- TextDecorationLocationValidation.cs
- SelectionPatternIdentifiers.cs
- SchemaType.cs
- TTSEngineProxy.cs
- Int16KeyFrameCollection.cs
- FileDataSourceCache.cs
- DefaultEvaluationContext.cs
- ListBoxItemWrapperAutomationPeer.cs
- initElementDictionary.cs
- DbTransaction.cs
- FlowLayoutSettings.cs
- Helpers.cs
- ServiceOperationParameter.cs
- ListViewAutomationPeer.cs
- PasswordTextContainer.cs
- QueryOperator.cs
- Events.cs
- TransformCryptoHandle.cs
- VirtualDirectoryMappingCollection.cs
- ForceCopyBuildProvider.cs
- XPathSingletonIterator.cs
- SectionRecord.cs
- ExpressionBuilder.cs
- Merger.cs
- UnsafeNativeMethods.cs
- XmlDataSource.cs
- SectionRecord.cs
- XmlAutoDetectWriter.cs
- XdrBuilder.cs
- AspNetHostingPermission.cs
- XmlDataLoader.cs
- PropertyDescriptorComparer.cs
- InvokeProviderWrapper.cs
- ManagementEventWatcher.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- HighlightComponent.cs
- HtmlElementCollection.cs
- ZipFileInfoCollection.cs
- DrawTreeNodeEventArgs.cs
- CaseInsensitiveComparer.cs
- GetWorkflowTree.cs
- SeekStoryboard.cs
- ObjectManager.cs
- BulletChrome.cs
- DrawingContextDrawingContextWalker.cs
- EmbeddedMailObject.cs
- CultureInfoConverter.cs
- TokenizerHelper.cs
- NetStream.cs
- XmlTypeMapping.cs
- ChainedAsyncResult.cs
- EventBuilder.cs
- FrameworkTextComposition.cs
- COM2EnumConverter.cs
- Formatter.cs
- RadioButtonBaseAdapter.cs
- SortedSetDebugView.cs
- BaseTemplateBuildProvider.cs
- IndentedTextWriter.cs
- RegexEditorDialog.cs
- ProfileManager.cs
- TextSelection.cs
- BitmapScalingModeValidation.cs
- XmlSchemaImporter.cs
- ContextMenu.cs
- QilSortKey.cs
- DependencyPropertyKey.cs
- HttpListenerResponse.cs
- NetworkAddressChange.cs
- MenuItemBinding.cs
- SQLSingleStorage.cs
- PropertyNames.cs
- CalculatedColumn.cs
- XhtmlBasicPageAdapter.cs
- TrustManagerMoreInformation.cs
- SqlSupersetValidator.cs
- WsrmFault.cs
- FocusTracker.cs
- QilCloneVisitor.cs
- ApplicationTrust.cs
- MemberDescriptor.cs
- PageSettings.cs
- NullableDoubleSumAggregationOperator.cs
- DesignerSerializationVisibilityAttribute.cs
- CryptoKeySecurity.cs
- InputProcessorProfilesLoader.cs
- SqlDataSourceAdvancedOptionsForm.cs