HtmlTextArea.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /* System.Web.Configuration
  2. * Authors:
  3. * Leen Toelen ([email protected])
  4. * Copyright (C) 2001 Leen Toelen
  5. */
  6. using System;
  7. using System.Web;
  8. using System.Web.UI;
  9. using System.ComponentModel;
  10. using System.Globalization;
  11. using System.Collections.Specialized;
  12. namespace System.Web.UI.HtmlControls{
  13. public class HtmlTextArea : HtmlContainerControl, IPostBackDataHandler{
  14. private static object EventServerChange = new Object();
  15. public HtmlTextArea(): base("textarea"){}
  16. public int Cols{
  17. get{
  18. string attr = Attributes["cols"];
  19. if (attr != null){
  20. return Int32.Parse(attr, CultureInfo.InvariantCulture);
  21. }
  22. return -1;
  23. }
  24. set{
  25. //MapIntegerAttributeToString(value) accessible constraint is "assembly"
  26. Attributes["cols"] = MapIntegerAttributeToString(value);
  27. }
  28. }
  29. public int Rows{
  30. get{
  31. string attr = Attributes["rows"];
  32. if (attr != null){
  33. return Int32.Parse(attr, CultureInfo.InvariantCulture);;
  34. }
  35. return -1;
  36. }
  37. set{
  38. //MapIntegerAttributeToString(value) accessible constraint is "assembly"
  39. Attributes["rows"] = MapIntegerAttributeToString(value);
  40. }
  41. }
  42. public string Value{
  43. get{
  44. return InnerHtml;
  45. }
  46. set{
  47. InnerHtml = value;
  48. }
  49. }
  50. protected string RenderedNameAttribute{
  51. get{
  52. return Name;
  53. }
  54. }
  55. public virtual string Name{
  56. get{
  57. if (UniqueID != null){
  58. return UniqueID;
  59. }
  60. return String.Empty;
  61. }
  62. set{}
  63. }
  64. public event EventHandler ServerChange{
  65. add{
  66. Events.AddHandler(EventServerChange, value);
  67. }
  68. remove{
  69. Events.RemoveHandler(EventServerChange, value);
  70. }
  71. }
  72. protected virtual void OnServerChange(EventArgs e){
  73. EventHandler handler;
  74. handler = (EventHandler) Events[EventServerChange];
  75. if(handler != null){
  76. handler.Invoke(this, e);
  77. }
  78. }
  79. //FIXME: not sure about the accessor
  80. public bool LoadPostData(string postDataKey, NameValueCollection postCollection){
  81. string currentValue = Value;
  82. string postedValue = postCollection[postDataKey];
  83. if (!currentValue.Equals(postedValue) && currentValue != null){
  84. Value = HttpUtility.HtmlEncode(postedValue);
  85. return true;
  86. }
  87. return false;
  88. }
  89. protected override void RenderAttributes(HtmlTextWriter writer){
  90. writer.WriteAttribute("name", RenderedNameAttribute);
  91. base.Attributes.Remove("name");
  92. base.RenderAttributes(writer);
  93. }
  94. //FIXME: not sure about the accessor
  95. public void RaisePostDataChangedEvent(){
  96. OnServerChange(EventArgs.Empty);
  97. }
  98. protected override void OnPreRender(EventArgs e){
  99. if(Events[EventServerChange]==null || Disabled==true){
  100. ViewState.SetItemDirty("value",false);
  101. }
  102. }
  103. protected override void AddParsedSubObject(object obj){
  104. //TODO: implement "Is Instance Of"
  105. // if (obj of type LiteralControl || obj of type DataBoundLiteralControl){
  106. AddParsedSubObject(obj);
  107. // return;
  108. // }
  109. //FormatResourceString accessible constraint is "assembly"
  110. throw new HttpException(HttpRuntime.FormatResourceString("Cannot_Have_Children_Of_Type","HtmlTextArea",obj.GetType().Name.ToString()));
  111. }
  112. } // class HtmlTextArea
  113. } // namespace System.Web.UI.HtmlControls