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
- DataGridAutoFormatDialog.cs
- ListBox.cs
- BamlReader.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- IconConverter.cs
- KnownBoxes.cs
- FolderLevelBuildProvider.cs
- ListBindingHelper.cs
- HtmlControlDesigner.cs
- HScrollProperties.cs
- SerTrace.cs
- DataGridTemplateColumn.cs
- Image.cs
- RectangleGeometry.cs
- PageEventArgs.cs
- Evidence.cs
- VerticalAlignConverter.cs
- InputLanguageCollection.cs
- hwndwrapper.cs
- DataGridDetailsPresenterAutomationPeer.cs
- HGlobalSafeHandle.cs
- FormsAuthenticationUser.cs
- RowToFieldTransformer.cs
- PolyBezierSegment.cs
- CurrencyManager.cs
- CompareInfo.cs
- GraphicsState.cs
- ZipIOExtraField.cs
- SecurityException.cs
- SdlChannelSink.cs
- Opcode.cs
- BaseTemplateCodeDomTreeGenerator.cs
- ReachDocumentSequenceSerializer.cs
- ReflectionTypeLoadException.cs
- DataGridViewComponentPropertyGridSite.cs
- XamlBuildTaskServices.cs
- ZipIOExtraFieldPaddingElement.cs
- NumericExpr.cs
- PrimaryKeyTypeConverter.cs
- AutoFocusStyle.xaml.cs
- HttpBrowserCapabilitiesWrapper.cs
- ParserHooks.cs
- WorkflowView.cs
- SafeUserTokenHandle.cs
- GradientStop.cs
- MetadataArtifactLoaderComposite.cs
- StrokeNodeData.cs
- BitmapData.cs
- RegionData.cs
- SatelliteContractVersionAttribute.cs
- Block.cs
- XamlFrame.cs
- TableSectionStyle.cs
- TreeViewImageIndexConverter.cs
- PathSegmentCollection.cs
- LogicalExpr.cs
- TCEAdapterGenerator.cs
- DaylightTime.cs
- PrintDialog.cs
- SharedDp.cs
- ThemeDirectoryCompiler.cs
- WithParamAction.cs
- BaseProcessor.cs
- GlyphInfoList.cs
- DBConnection.cs
- DataGridViewEditingControlShowingEventArgs.cs
- PersonalizationProviderHelper.cs
- EntityFunctions.cs
- Environment.cs
- StickyNoteHelper.cs
- LogicalExpressionTypeConverter.cs
- SessionPageStateSection.cs
- RemotingConfiguration.cs
- ListViewContainer.cs
- DictionaryGlobals.cs
- MiniCustomAttributeInfo.cs
- PrivilegeNotHeldException.cs
- PriorityBinding.cs
- Simplifier.cs
- SpeechEvent.cs
- FixedHyperLink.cs
- XmlJsonWriter.cs
- GeometryModel3D.cs
- FixedSchema.cs
- MissingMethodException.cs
- KnownBoxes.cs
- MetaModel.cs
- Grant.cs
- XmlSchemaSimpleContent.cs
- HttpCapabilitiesEvaluator.cs
- SizeIndependentAnimationStorage.cs
- SchemaNotation.cs
- ArraySubsetEnumerator.cs
- ActivityMetadata.cs
- SqlCommandBuilder.cs
- WebPartPersonalization.cs
- DependencyPropertyDescriptor.cs
- DataRowComparer.cs
- MessageQueue.cs
- TemplateModeChangedEventArgs.cs