using System.Globalization;
using System.Collections.Specialized;
using System.Security.Permissions;
+using System.Web.Util;
namespace System.Web.UI.WebControls {
[AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
// attributes
[ValidationProperty("SelectedItem")]
-#if NET_2_0
[SupportsEventValidation]
-#endif
public class ListBox : ListControl, IPostBackDataHandler {
public ListBox ()
}
[Browsable(false)]
-#if NET_2_0 && HAVE_CONTROL_ADAPTERS
+#if HAVE_CONTROL_ADAPTERS
public virtual new
#else
public override
}
[Browsable(false)]
-#if NET_2_0 && HAVE_CONTROL_ADAPTERS
+#if HAVE_CONTROL_ADAPTERS
public virtual new
#else
public override
}
[Browsable(false)]
-#if NET_2_0 && HAVE_CONTROL_ADAPTERS
+#if HAVE_CONTROL_ADAPTERS
public virtual new
#else
public override
set { base.BorderWidth = value; }
}
-#if ONLY_1_1
- [Bindable(true)]
-#endif
[DefaultValue(4)]
[WebSysDescription ("")]
[WebCategory ("Appearance")]
}
}
-#if ONLY_1_1
- [Bindable(false)]
- [Browsable(false)]
- [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public override string ToolTip {
- get { return String.Empty; }
- set { /* Tooltip is always String.Empty */ }
- }
-#endif
-#if NET_2_0
public virtual int[] GetSelectedIndices ()
{
return (int []) GetSelectedIndicesInternal ().ToArray (typeof (int));
}
-#endif
protected override void AddAttributesToRender (HtmlTextWriter writer)
{
if (Page != null)
Page.VerifyRenderingInServerForm (this);
- base.AddAttributesToRender (writer);
-#if NET_2_0
if (ID != null)
writer.AddAttribute (HtmlTextWriterAttribute.Name, UniqueID);
-#else
- writer.AddAttribute (HtmlTextWriterAttribute.Name, UniqueID);
-#endif
-
- if (AutoPostBack)
-#if NET_2_0
- writer.AddAttribute (HtmlTextWriterAttribute.Onchange, Page.ClientScript.GetPostBackEventReference (GetPostBackOptions ()));
-#else
- writer.AddAttribute (HtmlTextWriterAttribute.Onchange,
- Page.ClientScript.GetPostBackClientHyperlink (this, ""));
-#endif
+ if (AutoPostBack) {
+ string onchange = Page.ClientScript.GetPostBackEventReference (GetPostBackOptions (), true);
+ onchange = String.Concat ("setTimeout('", onchange.Replace ("\\", "\\\\").Replace ("'", "\\'"), "', 0)");
+ writer.AddAttribute (HtmlTextWriterAttribute.Onchange, BuildScriptAttribute ("onchange", onchange));
+ }
+
if (SelectionMode == ListSelectionMode.Multiple)
writer.AddAttribute (HtmlTextWriterAttribute.Multiple,
- "multiple");
+ "multiple", false);
writer.AddAttribute (HtmlTextWriterAttribute.Size,
- Rows.ToString (CultureInfo.InvariantCulture));
+ Rows.ToString (Helpers.InvariantCulture));
+
+ base.AddAttributesToRender (writer);
}
-#if NET_2_0
PostBackOptions GetPostBackOptions () {
PostBackOptions options = new PostBackOptions (this);
options.ActionUrl = null;
options.ValidationGroup = null;
- options.Argument = "";
+ options.Argument = String.Empty;
options.RequiresJavaScriptProtocol = false;
options.ClientSubmit = true;
options.PerformValidation = CausesValidation && Page != null && Page.AreValidatorsUplevel (ValidationGroup);
return options;
}
-#endif
-#if NET_2_0
- protected internal
-#else
- protected
-#endif
- override void RenderContents (HtmlTextWriter writer)
- {
- foreach (ListItem item in Items) {
- writer.WriteBeginTag ("option");
- if (item.Selected) {
- writer.WriteAttribute ("selected", "selected", false);
- }
- writer.WriteAttribute ("value", item.Value, true);
-
- writer.Write (">");
- string encoded = HttpUtility.HtmlEncode (item.Text);
- writer.Write (encoded);
- writer.WriteEndTag ("option");
- writer.WriteLine ();
- }
- }
-#if NET_2_0
protected internal
-#else
- protected
-#endif
override void OnPreRender (EventArgs e)
{
base.OnPreRender (e);
- if (Page != null && Enabled)
- Page.RegisterRequiresPostBack (this);
+ Page page = Page;
+ if (page != null && IsEnabled)
+ page.RegisterRequiresPostBack (this);
}
-#if NET_2_0
protected virtual
-#endif
bool LoadPostData (string postDataKey, NameValueCollection postCollection)
{
+ EnsureDataBound ();
string [] values = postCollection.GetValues (postDataKey);
if (values == null || values.Length == 0) {
int prev_index = SelectedIndex;
SelectedIndex = -1;
return (prev_index != -1);
}
+ ValidateEvent (UniqueID, values [0]);
if (SelectionMode == ListSelectionMode.Single)
return SelectSingle (values);
return false;
}
-#if NET_2_0
protected virtual
-#endif
void RaisePostDataChangedEvent ()
{
-#if NET_2_0
if (CausesValidation)
Page.Validate (ValidationGroup);
-#endif
OnSelectedIndexChanged (EventArgs.Empty);
}
{
RaisePostDataChangedEvent ();
}
+ internal override bool MultiSelectOk ()
+ {
+ return this.SelectionMode == ListSelectionMode.Multiple;
+ }
}
}
+
+