Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebControls / Listbox.cs / 1305376 / Listbox.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Web;
using System.Web.UI;
///
/// Constructs a list box and defines its
/// properties.
///
[
ValidationProperty("SelectedItem"),
SupportsEventValidation
]
public class ListBox : ListControl, IPostBackDataHandler {
///
/// Initializes a new instance of the class.
///
public ListBox() {
}
///
/// [To be supplied.]
///
[
Browsable(false)
]
public override Color BorderColor {
get {
return base.BorderColor;
}
set {
base.BorderColor = value;
}
}
///
/// [To be supplied.]
///
[
Browsable(false)
]
public override BorderStyle BorderStyle {
get {
return base.BorderStyle;
}
set {
base.BorderStyle = value;
}
}
///
/// [To be supplied.]
///
[
Browsable(false)
]
public override Unit BorderWidth {
get {
return base.BorderWidth;
}
set {
base.BorderWidth = value;
}
}
internal override bool IsMultiSelectInternal {
get {
return SelectionMode == ListSelectionMode.Multiple;
}
}
///
/// Gets or
/// sets the display height (in rows) of the list box.
///
[
WebCategory("Appearance"),
DefaultValue(4),
WebSysDescription(SR.ListBox_Rows)
]
public virtual int Rows {
get {
object n = ViewState["Rows"];
return((n == null) ? 4 : (int)n);
}
set {
if (value < 1) {
throw new ArgumentOutOfRangeException("value");
}
ViewState["Rows"] = value;
}
}
///
/// Gets or sets
/// the selection behavior of the list box.
///
[
WebCategory("Behavior"),
DefaultValue(ListSelectionMode.Single),
WebSysDescription(SR.ListBox_SelectionMode)
]
public virtual ListSelectionMode SelectionMode {
get {
object sm = ViewState["SelectionMode"];
return((sm == null) ? ListSelectionMode.Single : (ListSelectionMode)sm);
}
set {
if (value < ListSelectionMode.Single || value > ListSelectionMode.Multiple) {
throw new ArgumentOutOfRangeException("value");
}
ViewState["SelectionMode"] = value;
}
}
///
protected override void AddAttributesToRender(HtmlTextWriter writer) {
writer.AddAttribute(HtmlTextWriterAttribute.Size,
Rows.ToString(NumberFormatInfo.InvariantInfo));
string uniqueID = UniqueID;
if (uniqueID != null) {
writer.AddAttribute(HtmlTextWriterAttribute.Name, uniqueID);
}
base.AddAttributesToRender(writer);
}
public virtual int[] GetSelectedIndices() {
return (int[])SelectedIndicesInternal.ToArray(typeof(int));
}
///
///
///
protected internal override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
if (Page != null && SelectionMode == ListSelectionMode.Multiple && Enabled) {
// ensure postback when no item is selected
Page.RegisterRequiresPostBack(this);
}
}
///
///
/// Loads the posted content of the list control if it is different from the last
/// posting.
///
bool IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) {
return LoadPostData(postDataKey, postCollection);
}
///
///
/// Loads the posted content of the list control if it is different from the last
/// posting.
///
protected virtual bool LoadPostData(String postDataKey, NameValueCollection postCollection) {
if (IsEnabled == false) {
// When a ListBox is disabled, then there is no postback
// data for it. Any checked state information has been loaded
// via view state.
return false;
}
string[] selectedItems = postCollection.GetValues(postDataKey);
bool selectionChanged = false;
EnsureDataBound();
if (selectedItems != null) {
if (SelectionMode == ListSelectionMode.Single) {
ValidateEvent(postDataKey, selectedItems[0]);
int n = Items.FindByValueInternal(selectedItems[0], false);
if (SelectedIndex != n) {
SetPostDataSelection(n);
selectionChanged = true;
}
}
else { // multiple selection
int count = selectedItems.Length;
ArrayList oldSelectedIndices = SelectedIndicesInternal;
ArrayList newSelectedIndices = new ArrayList(count);
for (int i=0; i < count; i++) {
ValidateEvent(postDataKey, selectedItems[i]);
// create array of new indices from posted values
newSelectedIndices.Add(Items.FindByValueInternal(selectedItems[i], false));
}
int oldcount = 0;
if (oldSelectedIndices != null)
oldcount = oldSelectedIndices.Count;
if (oldcount == count) {
// check new indices against old indices
// assumes selected values are posted in order
for (int i=0; i < count; i++) {
if (((int)newSelectedIndices[i]) != ((int)oldSelectedIndices[i])) {
selectionChanged = true;
break;
}
}
}
else {
// indices must have changed if count is different
selectionChanged = true;
}
if (selectionChanged) {
// select new indices
SelectInternal(newSelectedIndices);
}
}
}
else { // no items selected
if (SelectedIndex != -1) {
SetPostDataSelection(-1);
selectionChanged = true;
}
}
return selectionChanged;
}
///
///
/// Invokes the OnSelectedIndexChanged method whenever posted data
/// for the control has changed.
///
void IPostBackDataHandler.RaisePostDataChangedEvent() {
RaisePostDataChangedEvent();
}
///
///
/// Invokes the OnSelectedIndexChanged method whenever posted data
/// for the control has changed.
///
protected virtual void RaisePostDataChangedEvent() {
if (AutoPostBack && !Page.IsPostBackEventControlRegistered) {
// VSWhidbey 204824
Page.AutoPostBackControl = this;
if (CausesValidation) {
Page.Validate(ValidationGroup);
}
}
OnSelectedIndexChanged(EventArgs.Empty);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Web;
using System.Web.UI;
///
/// Constructs a list box and defines its
/// properties.
///
[
ValidationProperty("SelectedItem"),
SupportsEventValidation
]
public class ListBox : ListControl, IPostBackDataHandler {
///
/// Initializes a new instance of the class.
///
public ListBox() {
}
///
/// [To be supplied.]
///
[
Browsable(false)
]
public override Color BorderColor {
get {
return base.BorderColor;
}
set {
base.BorderColor = value;
}
}
///
/// [To be supplied.]
///
[
Browsable(false)
]
public override BorderStyle BorderStyle {
get {
return base.BorderStyle;
}
set {
base.BorderStyle = value;
}
}
///
/// [To be supplied.]
///
[
Browsable(false)
]
public override Unit BorderWidth {
get {
return base.BorderWidth;
}
set {
base.BorderWidth = value;
}
}
internal override bool IsMultiSelectInternal {
get {
return SelectionMode == ListSelectionMode.Multiple;
}
}
///
/// Gets or
/// sets the display height (in rows) of the list box.
///
[
WebCategory("Appearance"),
DefaultValue(4),
WebSysDescription(SR.ListBox_Rows)
]
public virtual int Rows {
get {
object n = ViewState["Rows"];
return((n == null) ? 4 : (int)n);
}
set {
if (value < 1) {
throw new ArgumentOutOfRangeException("value");
}
ViewState["Rows"] = value;
}
}
///
/// Gets or sets
/// the selection behavior of the list box.
///
[
WebCategory("Behavior"),
DefaultValue(ListSelectionMode.Single),
WebSysDescription(SR.ListBox_SelectionMode)
]
public virtual ListSelectionMode SelectionMode {
get {
object sm = ViewState["SelectionMode"];
return((sm == null) ? ListSelectionMode.Single : (ListSelectionMode)sm);
}
set {
if (value < ListSelectionMode.Single || value > ListSelectionMode.Multiple) {
throw new ArgumentOutOfRangeException("value");
}
ViewState["SelectionMode"] = value;
}
}
///
protected override void AddAttributesToRender(HtmlTextWriter writer) {
writer.AddAttribute(HtmlTextWriterAttribute.Size,
Rows.ToString(NumberFormatInfo.InvariantInfo));
string uniqueID = UniqueID;
if (uniqueID != null) {
writer.AddAttribute(HtmlTextWriterAttribute.Name, uniqueID);
}
base.AddAttributesToRender(writer);
}
public virtual int[] GetSelectedIndices() {
return (int[])SelectedIndicesInternal.ToArray(typeof(int));
}
///
///
///
protected internal override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
if (Page != null && SelectionMode == ListSelectionMode.Multiple && Enabled) {
// ensure postback when no item is selected
Page.RegisterRequiresPostBack(this);
}
}
///
///
/// Loads the posted content of the list control if it is different from the last
/// posting.
///
bool IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) {
return LoadPostData(postDataKey, postCollection);
}
///
///
/// Loads the posted content of the list control if it is different from the last
/// posting.
///
protected virtual bool LoadPostData(String postDataKey, NameValueCollection postCollection) {
if (IsEnabled == false) {
// When a ListBox is disabled, then there is no postback
// data for it. Any checked state information has been loaded
// via view state.
return false;
}
string[] selectedItems = postCollection.GetValues(postDataKey);
bool selectionChanged = false;
EnsureDataBound();
if (selectedItems != null) {
if (SelectionMode == ListSelectionMode.Single) {
ValidateEvent(postDataKey, selectedItems[0]);
int n = Items.FindByValueInternal(selectedItems[0], false);
if (SelectedIndex != n) {
SetPostDataSelection(n);
selectionChanged = true;
}
}
else { // multiple selection
int count = selectedItems.Length;
ArrayList oldSelectedIndices = SelectedIndicesInternal;
ArrayList newSelectedIndices = new ArrayList(count);
for (int i=0; i < count; i++) {
ValidateEvent(postDataKey, selectedItems[i]);
// create array of new indices from posted values
newSelectedIndices.Add(Items.FindByValueInternal(selectedItems[i], false));
}
int oldcount = 0;
if (oldSelectedIndices != null)
oldcount = oldSelectedIndices.Count;
if (oldcount == count) {
// check new indices against old indices
// assumes selected values are posted in order
for (int i=0; i < count; i++) {
if (((int)newSelectedIndices[i]) != ((int)oldSelectedIndices[i])) {
selectionChanged = true;
break;
}
}
}
else {
// indices must have changed if count is different
selectionChanged = true;
}
if (selectionChanged) {
// select new indices
SelectInternal(newSelectedIndices);
}
}
}
else { // no items selected
if (SelectedIndex != -1) {
SetPostDataSelection(-1);
selectionChanged = true;
}
}
return selectionChanged;
}
///
///
/// Invokes the OnSelectedIndexChanged method whenever posted data
/// for the control has changed.
///
void IPostBackDataHandler.RaisePostDataChangedEvent() {
RaisePostDataChangedEvent();
}
///
///
/// Invokes the OnSelectedIndexChanged method whenever posted data
/// for the control has changed.
///
protected virtual void RaisePostDataChangedEvent() {
if (AutoPostBack && !Page.IsPostBackEventControlRegistered) {
// VSWhidbey 204824
Page.AutoPostBackControl = this;
if (CausesValidation) {
Page.Validate(ValidationGroup);
}
}
OnSelectedIndexChanged(EventArgs.Empty);
}
}
}
// 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
- SectionInformation.cs
- TextEmbeddedObject.cs
- PreProcessor.cs
- Privilege.cs
- GlyphsSerializer.cs
- SharedStatics.cs
- ContentPlaceHolder.cs
- DbConnectionPool.cs
- CaseInsensitiveComparer.cs
- CachedCompositeFamily.cs
- AttributeUsageAttribute.cs
- IgnoreDeviceFilterElement.cs
- WebEvents.cs
- DragDrop.cs
- MouseOverProperty.cs
- EventLogPermission.cs
- EntityReference.cs
- BinaryMessageFormatter.cs
- ImageSource.cs
- DataGridViewColumn.cs
- TemplateParser.cs
- SafeEventLogWriteHandle.cs
- QuaternionAnimationBase.cs
- MatrixAnimationUsingKeyFrames.cs
- DesignTimeParseData.cs
- TemplateControl.cs
- ConsoleTraceListener.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- ProfilePropertySettings.cs
- QilFunction.cs
- ManagementObjectCollection.cs
- FilterableAttribute.cs
- SqlRewriteScalarSubqueries.cs
- MenuItemStyleCollection.cs
- WebPartDisplayModeCollection.cs
- Unit.cs
- DrawingVisual.cs
- ProcessHostServerConfig.cs
- _TransmitFileOverlappedAsyncResult.cs
- latinshape.cs
- ContentElement.cs
- dbdatarecord.cs
- MemberAssignmentAnalysis.cs
- SmtpMail.cs
- ComPlusInstanceContextInitializer.cs
- _FixedSizeReader.cs
- XmlText.cs
- CriticalFinalizerObject.cs
- NativeMethods.cs
- ListBoxAutomationPeer.cs
- XmlRawWriter.cs
- XmlDataLoader.cs
- DropShadowEffect.cs
- HuffmanTree.cs
- ConstrainedDataObject.cs
- MultiPageTextView.cs
- EditingCoordinator.cs
- SourceFileInfo.cs
- UserControlCodeDomTreeGenerator.cs
- RectAnimationBase.cs
- ListViewAutomationPeer.cs
- StrongTypingException.cs
- FontSourceCollection.cs
- AspNetHostingPermission.cs
- TripleDESCryptoServiceProvider.cs
- JavaScriptSerializer.cs
- SectionInformation.cs
- ButtonColumn.cs
- CodeRegionDirective.cs
- ElementsClipboardData.cs
- TerminatorSinks.cs
- DesignerVerbCollection.cs
- DesignTimeTemplateParser.cs
- TreeNodeStyleCollection.cs
- Positioning.cs
- ControlCachePolicy.cs
- CultureTableRecord.cs
- TrustManagerMoreInformation.cs
- ConsumerConnectionPoint.cs
- GlobalEventManager.cs
- SymbolEqualComparer.cs
- EntityDataSourceConfigureObjectContext.cs
- WindowsPen.cs
- ContentWrapperAttribute.cs
- GeneratedCodeAttribute.cs
- PtsContext.cs
- Debugger.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- GetIndexBinder.cs
- DocumentApplicationJournalEntry.cs
- KoreanCalendar.cs
- TreeBuilderXamlTranslator.cs
- WebServiceHost.cs
- KeyPressEvent.cs
- ScrollItemProviderWrapper.cs
- InvalidPrinterException.cs
- XPathDocument.cs
- ReflectTypeDescriptionProvider.cs
- TransformConverter.cs
- documentsequencetextcontainer.cs