-/**\r
- * Namespace: System.Web.UI.WebControls\r
- * Class: ListBox\r
- *\r
- * Author: Gaurav Vaish\r
- * Maintainer: gvaish@iitk.ac.in\r
- * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
- * Implementation: yes\r
- * Status: 100%\r
- *\r
- * (C) Gaurav Vaish (2002)\r
- */\r
+//
+// System.Web.UI.WebControls.ListBox.cs
+//
+// Authors:
+// Gaurav Vaish (gvaish@iitk.ac.in)
+// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+//
+// (C) Gaurav Vaish (2002)
+// (C) 2003 Andreas Nahr
+//\r
\r
using System;\r
using System.Drawing;\r
+using System.Collections;\r
using System.Collections.Specialized;\r
+using System.ComponentModel;\r
+using System.Globalization;\r
using System.Web;\r
using System.Web.UI;\r
\r
namespace System.Web.UI.WebControls\r
{\r
+ [ValidationProperty("SelectedItem")]\r
public class ListBox : ListControl, IPostBackDataHandler\r
{\r
- public ListBox(): base()\r
+ public ListBox () : base ()\r
{\r
}\r
-\r
+
+ [Browsable (false)]\r
public override Color BorderColor\r
{\r
- get\r
- {\r
- return BorderColor;\r
- }\r
- set\r
- {\r
- BorderColor = value;\r
- }\r
+ get { return base.BorderColor; }\r
+ set { base.BorderColor = value; }\r
}\r
-\r
- public override Style BorderStyle\r
+
+ [Browsable (false)]\r
+ public override BorderStyle BorderStyle\r
{\r
- get\r
- {\r
- return BorderStyle;\r
- }\r
- set\r
- {\r
- BorderStyle = value;\r
- }\r
+ get { return base.BorderStyle; }\r
+ set { base.BorderStyle = value; }\r
}\r
-\r
+
+ [Browsable (false)]\r
public override Unit BorderWidth\r
{\r
- get\r
- {\r
- return BorderWidth;\r
- }\r
- set\r
- {\r
- BorderWidth = value;\r
- }\r
+ get { return base.BorderWidth; }\r
+ set { base.BorderWidth = value; }\r
}\r
-\r
+
+
+ [DefaultValue (4), Bindable (true), WebCategory ("Appearance")]
+ [WebSysDescription ("The number of rows displayed by the control.")]\r
public virtual int Rows\r
{\r
- get\r
- {\r
- object o = ViewState["Rows"];\r
- if(o != null)\r
- return (int)o;\r
- return 4;\r
+ get {\r
+ object o = ViewState ["Rows"];\r
+ return (o == null) ? 4 : (int) o;\r
}\r
- set\r
- {\r
- if(value < 1 || value > 2000)\r
- {\r
- throw new ArgumentOutOfRangeException();\r
- }\r
- ViewState["Rows"] = value;\r
+\r
+ set {\r
+ if (value < 1 || value > 2000)\r
+ throw new ArgumentOutOfRangeException ("value", "Rows value has to be >= 0 and <= 2000.");\r
+\r
+ ViewState ["Rows"] = value;\r
}\r
}\r
-\r
+
+ [DefaultValue (typeof (ListSelectionMode), "Single"), WebCategory ("Behavior")]
+ [WebSysDescription ("The mode describing how the entries can be selected.")]\r
public virtual ListSelectionMode SelectionMode\r
{\r
get\r
{\r
- object o = ViewState["SelectionMode"];\r
- if(o != null)\r
- return (ListSelectionMode)o;\r
- return ListSelectionMode.Single;\r
+ object o = ViewState ["SelectionMode"];\r
+ return (o == null) ? ListSelectionMode.Single : (ListSelectionMode) o;\r
}\r
set\r
{\r
- if(!Enum.IsDefined(typeof(ListSelectionMode), value))\r
- {\r
- throw new ArgumentException();\r
- }\r
- ViewState["SelectionMode"] = value;\r
+ if (!Enum.IsDefined (typeof (ListSelectionMode), value))\r
+ throw new ArgumentOutOfRangeException ("value", "Only valid enumeration members are allowed");\r
+ ViewState ["SelectionMode"] = value;\r
}\r
}\r
-\r
+
+ [Browsable (false), DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ [Bindable (false), EditorBrowsable (EditorBrowsableState.Never)]\r
public override string ToolTip\r
{\r
- get\r
- {\r
- return String.Empty;\r
- }\r
- set\r
- {\r
- // Don't do anything.\r
- }\r
+ get { return String.Empty; }\r
+ set { /* Don't do anything. */ }\r
}\r
\r
- protected override void AddAttributesToRender(HtmlTextWriter writer)\r
+ protected override void AddAttributesToRender (HtmlTextWriter writer)\r
{\r
- if(Page != null)\r
- {\r
- Page.VerifyRenderingInServerForm(this);\r
- }\r
- writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);\r
- writer.AddAttribute(HtmlTextWriterAttribute.Size, Rows.ToString(NumberFormatInfo.InvariantInfo);\r
- writer.AddAttribute(HtmlTextWriterAttribute.Multiple, "multiple");\r
- if(AutoPostBack && Page != null)\r
- {\r
- writer.AddAttribute(HtmlTextWriterAttribute.Onchange, Page.GetPostBackClientEvent(""));\r
- writer.AddAttribute("language", "javascript");\r
+ if (Page != null)\r
+ Page.VerifyRenderingInServerForm (this);\r
+\r
+ writer.AddAttribute (HtmlTextWriterAttribute.Name, UniqueID);\r
+ base.AddAttributesToRender (writer);\r
+ writer.AddAttribute (HtmlTextWriterAttribute.Size,\r
+ Rows.ToString (NumberFormatInfo.InvariantInfo));\r
+\r
+ if (SelectionMode == ListSelectionMode.Multiple)\r
+ writer.AddAttribute (HtmlTextWriterAttribute.Multiple, "multiple");\r
+\r
+ if (AutoPostBack && Page != null){\r
+ writer.AddAttribute (HtmlTextWriterAttribute.Onchange,\r
+ Page.GetPostBackClientEvent (this, ""));\r
+ writer.AddAttribute ("language", "javascript");\r
}\r
}\r
\r
- protected override void OnPreRender(EventArgs e)\r
+ protected override void OnPreRender (EventArgs e)\r
{\r
- base.OnPreRender(e);\r
- if(Page != null && SelectionMode == ListSelectionMode.Multiple && Enabled)\r
- {\r
+ base.OnPreRender (e);\r
+ if (Page != null && SelectionMode == ListSelectionMode.Multiple && Enabled)\r
Page.RegisterRequiresPostBack(this);\r
- }\r
}\r
\r
- protected override void RenderContents(HtmlTextWriter writer)\r
+ protected override void RenderContents (HtmlTextWriter writer)\r
{\r
bool isMultAllowed = (SelectionMode == ListSelectionMode.Multiple);\r
bool selMade = false;\r
- foreach(ListItem current in Items)\r
- {\r
- writer.WriteBeginTag("option");\r
- if(current.Selected)\r
- {\r
- if(!isMultAllowed && selMade)\r
- {\r
- throw new HttpException("Cannnot_MutliSelect_In_Single_Mode");\r
- }\r
+ foreach (ListItem current in Items){\r
+ writer.WriteBeginTag ("option");\r
+ if (current.Selected){\r
+ if (!isMultAllowed && selMade)\r
+ throw new HttpException ("Cannot_MultiSelect_In_Single_Mode");\r
selMade = true;\r
- writer.WriteAttribute("selected", "selected");\r
+ writer.WriteAttribute ("selected", "selected");\r
}\r
- writer.WriteAttribute("value", current.Value, true);\r
- writer.Write('>');\r
- writer.Write(HttpUtility.Encode(Text));\r
- writer.WriteEndTag("option");\r
- writer.WriteLine();\r
+ writer.WriteAttribute ("value", current.Value, true);\r
+ writer.Write ('>');\r
+ writer.Write (HttpUtility.HtmlEncode (current.Text));\r
+ writer.WriteEndTag ("option");\r
+ writer.WriteLine ();\r
}\r
}\r
\r
- bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection)\r
+ bool IPostBackDataHandler.LoadPostData (string postDataKey,\r
+ NameValueCollection postCollection)\r
{\r
- string[] vals = postCollection.GetValues(postDataKey);\r
+ string[] vals = postCollection.GetValues (postDataKey);\r
bool updated = false;\r
- ArrayList selected = SelectedIndices;\r
- ArrayList final = new ArrayList(vals.Length);\r
- if(vals != null)\r
- {\r
- if(SelectionMode == ListSelectionMode.Single)\r
- {\r
- int index = Items.FindByValueInternal(vals[0]);\r
- if(SelectedIndex != index)\r
- {\r
+ if (vals != null){\r
+ if (SelectionMode == ListSelectionMode.Single){\r
+ int index = Items.FindByValueInternal (vals [0]);\r
+ if (SelectedIndex != index){\r
SelectedIndex = index;\r
updated = true;\r
}\r
- } else\r
- {\r
- foreach(string current in vals)\r
- {\r
- final.Add(Items.FindByValueInternal(current);\r
- }\r
- if(selected != null && selected.Count == vals.Length)\r
- {\r
- for(int ctr = 0; ctr < vals.Length; ctr++)\r
- {\r
- if(((int)final[ctr]) != ((int)selected[ctr]))\r
- {\r
+ } else {\r
+ ArrayList indices = SelectedIndices;
+ int length = vals.Length;
+ ArrayList final = new ArrayList (length);
+ foreach (string current in vals)\r
+ final.Add (Items.FindByValueInternal (current));\r
+
+ if (indices.Count == length) {
+ for (int ctr = 0; ctr < length; ctr++){
+ if (((int) final [ctr]) != ((int) indices [ctr])){
updated = true;\r
break;\r
}\r
}\r
- } else\r
- {\r
+ } else {\r
updated = true;\r
}\r
- }\r
- if(!updated)\r
- {\r
- SelectInternal(final);\r
- }\r
- } else\r
- {\r
- if(SelectedIndex != -1)\r
+ if (updated)
+ Select (final);
+ }
+ } else {\r
+ if (SelectedIndex != -1)\r
SelectedIndex = -1;\r
updated = true;\r
}\r
return updated;\r
}\r
\r
- void IPostBackDataHandler.RaisePostDataChangedEvent()\r
+ void IPostBackDataHandler.RaisePostDataChangedEvent ()\r
{\r
- OnSelectedIndexChanged(EventArgs.Empty);\r
+ OnSelectedIndexChanged (EventArgs.Empty);\r
}\r
}\r
}\r