using System.Globalization;
using System.Collections.Specialized;
using System.Security.Permissions;
+using System.Web.Util;
namespace System.Web.UI.WebControls {
if (Page != null)
Page.VerifyRenderingInServerForm (this);
- base.AddAttributesToRender (writer);
#if NET_2_0
if (ID != null)
writer.AddAttribute (HtmlTextWriterAttribute.Name, UniqueID);
writer.AddAttribute (HtmlTextWriterAttribute.Name, UniqueID);
#endif
- if (AutoPostBack)
+ if (AutoPostBack) {
+#if NET_2_0
+ string onchange = Page.ClientScript.GetPostBackEventReference (GetPostBackOptions (), true);
+ onchange = String.Concat ("setTimeout('", onchange.Replace ("\\", "\\\\").Replace ("'", "\\'"), "', 0)");
+ writer.AddAttribute (HtmlTextWriterAttribute.Onchange, BuildScriptAttribute ("onchange", onchange));
+#else
writer.AddAttribute (HtmlTextWriterAttribute.Onchange,
- Page.ClientScript.GetPostBackClientHyperlink (this, ""));
-
+ BuildScriptAttribute ("onchange",
+ Page.ClientScript.GetPostBackClientHyperlink (this, "")));
+#endif
+ }
+
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
- protected internal
-#else
- protected
+ PostBackOptions GetPostBackOptions () {
+ PostBackOptions options = new PostBackOptions (this);
+ options.ActionUrl = null;
+ options.ValidationGroup = null;
+ options.Argument = String.Empty;
+ options.RequiresJavaScriptProtocol = false;
+ options.ClientSubmit = true;
+ options.PerformValidation = CausesValidation && Page != null && Page.AreValidatorsUplevel (ValidationGroup);
+ if (options.PerformValidation)
+ options.ValidationGroup = ValidationGroup;
+
+ return options;
+ }
#endif
- override void RenderContents (HtmlTextWriter writer)
+
+#if ONLY_1_1
+ protected override void RenderContents (HtmlTextWriter writer)
{
foreach (ListItem item in Items) {
- writer.WriteBeginTag ("option");
if (item.Selected) {
- writer.WriteAttribute ("selected", "selected", false);
+ writer.AddAttribute (HtmlTextWriterAttribute.Selected, "selected", false);
}
- writer.WriteAttribute ("value", item.Value, true);
-
- writer.Write (">");
+ writer.AddAttribute (HtmlTextWriterAttribute.Value, item.Value, true);
+ writer.RenderBeginTag (HtmlTextWriterTag.Option);
+
string encoded = HttpUtility.HtmlEncode (item.Text);
writer.Write (encoded);
- writer.WriteEndTag ("option");
+ writer.RenderEndTag ();
writer.WriteLine ();
}
}
+#endif
#if NET_2_0
protected internal
override void OnPreRender (EventArgs e)
{
base.OnPreRender (e);
- if (Page != null)
+ if (Page != null && Enabled)
Page.RegisterRequiresPostBack (this);
}
#endif
bool LoadPostData (string postDataKey, NameValueCollection postCollection)
{
+#if NET_2_0
+ EnsureDataBound ();
+#endif
string [] values = postCollection.GetValues (postDataKey);
if (values == null || values.Length == 0) {
int prev_index = SelectedIndex;
SelectedIndex = -1;
return (prev_index != -1);
}
+#if NET_2_0
+ ValidateEvent (UniqueID, values [0]);
+#endif
if (SelectionMode == ListSelectionMode.Single)
return SelectSingle (values);
#endif
void RaisePostDataChangedEvent ()
{
+#if NET_2_0
+ if (CausesValidation)
+ Page.Validate (ValidationGroup);
+#endif
OnSelectedIndexChanged (EventArgs.Empty);
}
{
RaisePostDataChangedEvent ();
}
+#if NET_2_0
+ protected internal override void VerifyMultiSelect()
+ {
+ //by default the ListControl will throw an exception in this method,
+ //therefor we should override the method if the class is supporting
+ //MultiSelect option.
+ if (this.SelectionMode != ListSelectionMode.Multiple)
+ throw new HttpException("Multiple select option is not supported");
+ }
+#endif
}
}
+
+