DropDownList.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /**
  2. * Namespace: System.Web.UI.WebControls
  3. * Class: DropDownList
  4. *
  5. * Author: Gaurav Vaish
  6. * Maintainer: [email protected]
  7. * Contact: <[email protected]>, <[email protected]>
  8. * Implementation: yes
  9. * Status: 100%
  10. *
  11. * (C) Gaurav Vaish (2002)
  12. */
  13. using System;
  14. using System.Collections.Specialized;
  15. using System.ComponentModel;
  16. using System.Drawing;
  17. using System.Web;
  18. using System.Web.UI;
  19. namespace System.Web.UI.WebControls
  20. {
  21. [ValidationProperty("SelectedItem")]
  22. public class DropDownList : ListControl, IPostBackDataHandler
  23. {
  24. public DropDownList(): base()
  25. {
  26. }
  27. public override Color BorderColor
  28. {
  29. get
  30. {
  31. return base.BorderColor;
  32. }
  33. set
  34. {
  35. base.BorderColor = value;
  36. }
  37. }
  38. public override BorderStyle BorderStyle
  39. {
  40. get
  41. {
  42. return base.BorderStyle;
  43. }
  44. set
  45. {
  46. base.BorderStyle = value;
  47. }
  48. }
  49. public override Unit BorderWidth
  50. {
  51. get
  52. {
  53. return base.BorderWidth;
  54. }
  55. set
  56. {
  57. base.BorderWidth = value;
  58. }
  59. }
  60. public override int SelectedIndex
  61. {
  62. get
  63. {
  64. int index = base.SelectedIndex;
  65. if (index < 0 && Items.Count > 0) {
  66. index = 0;
  67. Items [0].Selected = true;
  68. }
  69. return index;
  70. }
  71. set
  72. {
  73. base.SelectedIndex = value;
  74. }
  75. }
  76. public override string ToolTip
  77. {
  78. // MS ignores the tooltip for this one
  79. get {
  80. return String.Empty;
  81. }
  82. set {
  83. }
  84. }
  85. protected override void AddAttributesToRender(HtmlTextWriter writer)
  86. {
  87. if(Page != null)
  88. {
  89. Page.VerifyRenderingInServerForm(this);
  90. }
  91. writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
  92. base.AddAttributesToRender(writer);
  93. if(AutoPostBack && Page != null)
  94. {
  95. writer.AddAttribute(HtmlTextWriterAttribute.Onchange, Page.GetPostBackClientEvent(this,""));
  96. writer.AddAttribute("language", "javascript");
  97. }
  98. }
  99. protected override ControlCollection CreateControlCollection()
  100. {
  101. return new EmptyControlCollection(this);
  102. }
  103. protected override void RenderContents(HtmlTextWriter writer)
  104. {
  105. if(Items != null)
  106. {
  107. bool selected = false;
  108. foreach(ListItem current in Items)
  109. {
  110. writer.WriteBeginTag("option");
  111. if(current.Selected)
  112. {
  113. if(selected)
  114. {
  115. throw new HttpException(HttpRuntime.FormatResourceString("Cannot_Multiselect_In_DropDownList"));
  116. }
  117. selected = true;
  118. writer.WriteAttribute("selected", "selected", false);
  119. }
  120. writer.WriteAttribute("value", current.Value, true);
  121. writer.Write('>');
  122. HttpUtility.HtmlEncode(current.Text, writer);
  123. writer.WriteEndTag("option");
  124. writer.WriteLine();
  125. }
  126. }
  127. }
  128. bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection)
  129. {
  130. string[] vals = postCollection.GetValues(postDataKey);
  131. if(vals != null)
  132. {
  133. int index = Items.FindByValueInternal(vals[0]);
  134. if(index != SelectedIndex)
  135. {
  136. SelectedIndex = index;
  137. return true;
  138. }
  139. }
  140. return false;
  141. }
  142. void IPostBackDataHandler.RaisePostDataChangedEvent()
  143. {
  144. OnSelectedIndexChanged(EventArgs.Empty);
  145. }
  146. }
  147. }