Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / SelectionList.cs / 1305376 / SelectionList.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Drawing.Design; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Runtime.Serialization; using System.Security.Permissions; namespace System.Web.UI.MobileControls { /* * Mobile SelectionList class. * * Copyright (c) 2000 Microsoft Corporation */ ///[ ControlBuilderAttribute(typeof(ListControlBuilder)), DefaultEvent("SelectedIndexChanged"), DefaultProperty("DataSource"), Designer(typeof(System.Web.UI.Design.MobileControls.SelectionListDesigner)), DesignerAdapter(typeof(System.Web.UI.Design.MobileControls.Adapters.DesignerSelectionListAdapter)), Editor(typeof(System.Web.UI.Design.MobileControls.SelectionListComponentEditor), typeof(ComponentEditor)), ToolboxData("<{0}:SelectionList runat=\"server\">{0}:SelectionList>"), ToolboxItem("System.Web.UI.Design.WebControlToolboxItem, " + AssemblyRef.SystemDesign), ValidationProperty("Selection") ] [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 class SelectionList : MobileControl, IPostBackDataHandler, IListControl { private static readonly Object EventItemDataBind = new Object(); private static readonly Object EventSelectedIndexChanged = new Object(); private ListDataHelper _dataHelper; private int _cachedSelectedIndex = -1; private ListDataHelper DataHelper { get { if (_dataHelper == null) { _dataHelper = new ListDataHelper(this, ViewState); } return _dataHelper; } } ///////////////////////////////////////////////////////////////////////// // IListControl ///////////////////////////////////////////////////////////////////////// /// /// void IListControl.OnItemDataBind(ListDataBindEventArgs e) { OnItemDataBind(e); } /// /// bool IListControl.TrackingViewState { get { return IsTrackingViewState; } } /// /// /// [ Bindable(true), DefaultValue(null), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), MobileCategory(SR.Category_Data), MobileSysDescription(SR.List_DataSource) ] public virtual Object DataSource { get { return DataHelper.DataSource; } set { DataHelper.DataSource = value; } } private IEnumerable ResolvedDataSource { get { return DataHelper.ResolvedDataSource; } } ////// Gets or sets the ///property of the control which is used to populate /// the items within the control. /// [ Bindable(false), DefaultValue(""), MobileCategory(SR.Category_Data), MobileSysDescription(SR.List_DataMember), TypeConverter(typeof(System.Web.UI.Design.MobileControls.Converters.DataMemberConverter)) ] public virtual String DataMember { get { return DataHelper.DataMember; } set { DataHelper.DataMember = value; } } /// [ DefaultValue(""), MobileCategory(SR.Category_Data), MobileSysDescription(SR.List_DataTextField), TypeConverter(typeof(System.Web.UI.Design.MobileControls.Converters.DataFieldConverter)) ] public String DataTextField { get { return DataHelper.DataTextField; } set { DataHelper.DataTextField = value; } } /// [ DefaultValue(""), MobileCategory(SR.Category_Data), MobileSysDescription(SR.List_DataValueField), TypeConverter(typeof(System.Web.UI.Design.MobileControls.Converters.DataFieldConverter)) ] public String DataValueField { get { return DataHelper.DataValueField; } set { DataHelper.DataValueField = value; } } /// [ Bindable(false), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public bool IsMultiSelect { get { return (SelectType == ListSelectType.MultiSelectListBox || SelectType == ListSelectType.CheckBox); } } /// [ Bindable(true), Browsable(true), DefaultValue(4), MobileCategory(SR.Category_Appearance), MobileSysDescription(SR.SelectionList_Rows) ] public int Rows { get { Object o = ViewState["Rows"]; return o != null ? (int)o : 4; } set { if (value < 1) { throw new ArgumentOutOfRangeException("value"); } ViewState["Rows"] = value; } } /// [ Bindable(false), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int SelectedIndex { get { for (int i = 0; i < Items.Count; i++) { if (Items[i].Selected) { return i; } } return -1; } set { // if we have no items, save the selectedindex // for later databinding if (Items.Count == 0) { _cachedSelectedIndex = value; } else { if (value < -1 || value >= Items.Count) { throw new ArgumentOutOfRangeException( "SelectedIndex", SR.GetString(SR.SelectionList_OutOfRange,value)); } ClearSelection(); if (value >= 0) { Items[value].Selected = true; } } } } /// [ Bindable(false), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), ] public MobileListItem Selection { get { int selectedIndex = SelectedIndex; if (selectedIndex >= 0 && selectedIndex < Items.Count) { return Items[selectedIndex]; } else { return null; } } } /// [ Bindable(false), DefaultValue(null), Editor(typeof(System.Web.UI.Design.MobileControls.ItemCollectionEditor), typeof(UITypeEditor)), MergableProperty(false), MobileSysDescription(SR.List_Items), PersistenceMode(PersistenceMode.InnerDefaultProperty) ] public MobileListItemCollection Items { get { return DataHelper.Items; } } /// protected override void AddParsedSubObject(Object obj) { if (!(obj is LiteralControl)) { if (obj is MobileListItem) { DataHelper.AddItem((MobileListItem)obj); if(_cachedSelectedIndex != -1 && DataHelper.Items.Count > _cachedSelectedIndex) { SelectedIndex = _cachedSelectedIndex; _cachedSelectedIndex = -1; } } else { base.AddParsedSubObject(obj); } } } /// protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (Page != null && IsMultiSelect) { // ensure postback when no item is selected Page.RegisterRequiresPostBack(this); } } /// protected override void OnDataBinding(EventArgs e) { base.OnDataBinding(e); if (ResolvedDataSource != null) { CreateItems(ResolvedDataSource); } if (_cachedSelectedIndex != -1) { SelectedIndex = _cachedSelectedIndex; _cachedSelectedIndex = -1; } } /// protected virtual void CreateItems(IEnumerable dataSource) { DataHelper.CreateItems(dataSource); } /// [ MobileCategory(SR.Category_Action), MobileSysDescription(SR.SelectionList_OnSelectedIndexChanged) ] public event EventHandler SelectedIndexChanged { add { Events.AddHandler(EventSelectedIndexChanged, value); } remove { Events.RemoveHandler(EventSelectedIndexChanged, value); } } /// protected virtual void OnSelectedIndexChanged(EventArgs e) { EventHandler onSelectedIndexChangedHandler = (EventHandler)Events[EventSelectedIndexChanged]; if (onSelectedIndexChangedHandler != null) { onSelectedIndexChangedHandler(this, e); } } /// [ MobileCategory(SR.Category_Action), MobileSysDescription(SR.List_OnItemDataBind) ] public event ListDataBindEventHandler ItemDataBind { add { Events.AddHandler(EventItemDataBind, value); } remove { Events.RemoveHandler(EventItemDataBind, value); } } /// protected virtual void OnItemDataBind(ListDataBindEventArgs e) { ListDataBindEventHandler onItemDataBindHandler = (ListDataBindEventHandler)Events[EventItemDataBind]; if (onItemDataBindHandler != null) { onItemDataBindHandler(this, e); } } /// protected bool LoadPostData(String postDataKey, NameValueCollection postCollection) { bool dataChanged; bool handledByAdapter = Adapter.LoadPostData(postDataKey, postCollection, SelectedIndicesInternal.ToArray(typeof(int)), out dataChanged); if (!handledByAdapter) { throw new Exception(SR.GetString(SR.SelectionList_AdapterNotHandlingLoadPostData)); } return dataChanged; } /// protected void RaisePostDataChangedEvent() { OnSelectedIndexChanged(EventArgs.Empty); } /// [ Bindable(true), DefaultValue(ListSelectType.DropDown), MobileCategory(SR.Category_Appearance), MobileSysDescription(SR.SelectionList_SelectType) ] public ListSelectType SelectType { get { Object o = ViewState["SelectType"]; return (o != null) ? (ListSelectType)o : ListSelectType.DropDown; } set { ViewState["SelectType"] = value; } } /// [ Bindable(true), DefaultValue(""), MobileCategory(SR.Category_Appearance), MobileSysDescription(SR.Input_Title) ] public String Title { get { return ToString(ViewState["Title"]); } set { ViewState["Title"] = value; } } ///////////////////////////////////////////////////////////////////////// // STATE MANAGEMENT ///////////////////////////////////////////////////////////////////////// /// protected override void TrackViewState() { base.TrackViewState(); if (DataHelper.HasItems()) { ((IStateManager)Items).TrackViewState(); } } /// protected override Object SaveViewState() { Object baseState = base.SaveViewState(); Items.SaveSelection = true; Object items = ((IStateManager)Items).SaveViewState(); if (items != null || baseState != null) { return new Object[] { baseState, items }; } return null; } /// protected override void LoadViewState(Object savedState) { if (savedState != null) { Object[] state = (Object[])savedState; if (state[0] != null) { base.LoadViewState(state[0]); } // restore state of items Items.SaveSelection = true; ((IStateManager)Items).LoadViewState(state[1]); } } private ArrayList SelectedIndicesInternal { get { int count = Items.Count; ArrayList selectedIndices = new ArrayList(count); for (int i = 0; i < count; i++) { if (Items[i].Selected) { selectedIndices.Add(i); } } return selectedIndices; } } internal void ClearSelection() { for (int i = 0; i < Items.Count; i++) { Items[i].Selected = false; } } #region IPostBackDataHandler implementation bool IPostBackDataHandler.LoadPostData(String key, NameValueCollection data) { return LoadPostData(key, data); } void IPostBackDataHandler.RaisePostDataChangedEvent() { RaisePostDataChangedEvent(); } #endregion } } // 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
- NodeLabelEditEvent.cs
- DesignerActionItemCollection.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- HttpAsyncResult.cs
- HtmlGenericControl.cs
- ContentDisposition.cs
- ConfigXmlSignificantWhitespace.cs
- ScrollProperties.cs
- BinaryMessageFormatter.cs
- MachineKeySection.cs
- SchemaCollectionPreprocessor.cs
- DnsEndPoint.cs
- VirtualPathData.cs
- DataGridViewSelectedRowCollection.cs
- BinaryOperationBinder.cs
- ReadOnlyHierarchicalDataSourceView.cs
- OrderedDictionary.cs
- EpmSyndicationContentDeSerializer.cs
- EventHandlersStore.cs
- ListItem.cs
- __ConsoleStream.cs
- PropertyChangedEventArgs.cs
- StyleBamlRecordReader.cs
- DocumentSequenceHighlightLayer.cs
- MenuItemBindingCollection.cs
- RegisteredScript.cs
- DesignerTransaction.cs
- BitmapData.cs
- ConfigurationManagerHelperFactory.cs
- BaseDataListDesigner.cs
- DataGridViewRowCollection.cs
- CustomCategoryAttribute.cs
- XmlReader.cs
- validation.cs
- OperationDescription.cs
- DataObjectPastingEventArgs.cs
- ErrorWebPart.cs
- CustomError.cs
- DescendantBaseQuery.cs
- SQLDouble.cs
- DataSourceView.cs
- IndentedWriter.cs
- MergeFilterQuery.cs
- ColorTransformHelper.cs
- VisualStyleRenderer.cs
- FlowPosition.cs
- ThreadStaticAttribute.cs
- HtmlLink.cs
- BitmapCodecInfoInternal.cs
- TraversalRequest.cs
- WebResponse.cs
- baseaxisquery.cs
- BuildProvidersCompiler.cs
- OdbcDataReader.cs
- ToolStripKeyboardHandlingService.cs
- SafeRightsManagementQueryHandle.cs
- LiteralText.cs
- CompilerScope.Storage.cs
- RemotingConfigParser.cs
- DynamicPhysicalDiscoSearcher.cs
- _FixedSizeReader.cs
- SerializableTypeCodeDomSerializer.cs
- PointHitTestResult.cs
- CodeDirectiveCollection.cs
- translator.cs
- RelationshipEndMember.cs
- RankException.cs
- ReferencedType.cs
- basenumberconverter.cs
- BooleanFacetDescriptionElement.cs
- SendMailErrorEventArgs.cs
- SafeNativeMethods.cs
- DrawingCollection.cs
- Substitution.cs
- TextTreeText.cs
- PenThread.cs
- PeerApplication.cs
- DateTimeStorage.cs
- SystemFonts.cs
- Queue.cs
- RadioButton.cs
- PictureBox.cs
- _SingleItemRequestCache.cs
- PointLight.cs
- ToolboxComponentsCreatedEventArgs.cs
- _SingleItemRequestCache.cs
- Transform3D.cs
- CapabilitiesUse.cs
- CodeVariableReferenceExpression.cs
- EditingMode.cs
- CompilationRelaxations.cs
- EventLogConfiguration.cs
- AdCreatedEventArgs.cs
- PhysicalOps.cs
- SHA384.cs
- ColorBlend.cs
- FrameworkElementFactoryMarkupObject.cs
- TextBoxBase.cs
- HttpCacheParams.cs
- ShapeTypeface.cs