2002-03-04 Gaurav Vaish <gvaish@iitk.ac.in>
authorGaurav Vaish <gvaish@mono-cvs.ximian.com>
Mon, 4 Mar 2002 04:57:26 +0000 (04:57 -0000)
committerGaurav Vaish <gvaish@mono-cvs.ximian.com>
Mon, 4 Mar 2002 04:57:26 +0000 (04:57 -0000)
* BaseValidator.cs -- Rejuvination.

* **.cs (Added)  -- Completed ones (I guess)

* ChangeLog -- DON'T MISS THIS

* TODO -- Updated in accordance..

NOW I HAVE ONLY ONE CLASS THAT REMAINS 0% implemented and that is Repeater.

I will start work on it soon.

svn path=/trunk/mcs/; revision=2868

mcs/class/System.Web/System.Web.UI.WebControls/BaseValidator.cs
mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/System.Web.UI.WebControls/CustomValidator.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/DataGridPagerStyle.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/DataKeyCollection.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.WebControls/TODO

index 307375658e83b92f69b3d5adeb4d013785dd9b1c..71ae7ac854e8e73d87fc4c846f7c4a7bb2f76c12 100755 (executable)
@@ -6,7 +6,7 @@
  * Maintainer: gvaish@iitk.ac.in\r
  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
  * Implementation: yes\r
- * Status:  20%\r
+ * Status:  80%\r
  * \r
  * (C) Gaurav Vaish (2001)\r
  */\r
@@ -21,33 +21,32 @@ namespace System.Web.UI.WebControls
 {\r
        public abstract class BaseValidator: Label, IValidator\r
        {\r
-               //\r
-               private PropertyDescriptor pDesc;\r
-               private string ctValid = String.Empty;\r
-               private ValidatorDisplay vDisp = ValidatorDisplay.Static;\r
-               private bool enableClientScript; //TODO: check the default value := false;\r
-               private bool enabled = true;\r
-               private string errorMessage = String.Empty;\r
-               private Color foreColor = Color.Red;\r
-               private bool isValid = true;\r
+               private bool isValid;\r
+               private bool isPreRenderCalled;\r
+               private bool isPropertiesChecked;\r
                private bool propertiesValid;\r
                private bool renderUplevel;\r
-\r
-               public static PropertyDescriptor GetValidationProperty(object component)\r
+               \r
+               protected BaseValidator() : base()\r
                {\r
-                       //TODO: Have to workout this one!\r
-                       return null;\r
+                       isValid = true;\r
+                       ForeColor = Color.Red;\r
                }\r
                \r
                public string ControlToValidate\r
                {\r
                        get\r
                        {\r
-                               return ctValid;\r
+                               object o = ViewState["ControlToValidate"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
                        }\r
                        set\r
                        {\r
-                               ctValid = value;\r
+                               ViewState["ControlToValidate"] = value;\r
                        }\r
                }\r
                \r
@@ -55,12 +54,20 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return vDisp;\r
+                               object o = ViewState["Display"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (ValidatorDisplay)o;\r
+                               }\r
+                               return ValidatorDisplay.Static;\r
                        }\r
                        set\r
                        {\r
-                               //TODO: Throw new exception ArgumentException("....") if the value is not valid\r
-                               vDisp = value;\r
+                               if(!Enum.IsDefined(typeof(ValidatorDisplay), value))\r
+                               {\r
+                                       throw new ArgumentException();\r
+                               }\r
+                               ViewState["ValidatorDisplay"] = value;\r
                        }\r
                }\r
                \r
@@ -68,11 +75,16 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return enableClientScript;\r
+                               object o = ViewState["EnableClientScript"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (bool)o;\r
+                               }\r
+                               return true;\r
                        }\r
                        set\r
                        {\r
-                               enableClientScript = value;\r
+                               ViewState["EnableClientScript"] = value;\r
                        }\r
                }\r
                \r
@@ -80,11 +92,11 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return enabled;\r
+                               return Enabled;\r
                        }\r
                        set\r
                        {\r
-                               enabled = value;\r
+                               Enabled = value;\r
                        }\r
                }\r
                \r
@@ -92,11 +104,16 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return errorMessage;\r
+                               object o = ViewState["ErrorMessage"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
                        }\r
                        set\r
                        {\r
-                               errorMessage = value;\r
+                               ViewState["ErrorMessage"] = value;\r
                        }\r
                }\r
                \r
@@ -104,11 +121,11 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return foreColor;\r
+                               return ForeColor;\r
                        }\r
                        set\r
                        {\r
-                               foreColor = value;\r
+                               ForeColor = value;\r
                        }\r
                }\r
                \r
@@ -116,30 +133,63 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               return isValid;\r
+                               object o = ViewState["IsValid"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (bool)o;\r
+                               }\r
+                               return true;\r
                        }\r
                        set\r
                        {\r
-                               isValid = value;\r
+                               ViewState["IsValid"] = value;\r
                        }\r
                }\r
                \r
-               public void Validate()\r
+               public static PropertyDescriptor GetValidationProperty(object component)\r
                {\r
-                       // TODO: write the validation code\r
-                       // TODO: update the value of isValid\r
+                       ValidationPropertyAttribute attrib = (ValidationPropertyAttribute)((TypeDescriptor.GetAttributes(this))[typeof(ValidationPropertyAttribute]);\r
+                       if(attrib != null && attrib.Name != null)\r
+                       {\r
+                               return TypeDescriptor.GetProperties(this, null);\r
+                       }\r
+                       return null;\r
                }\r
                \r
-               protected BaseValidator()\r
+               public void Validate()\r
                {\r
-                       // Dummy Constructor\r
+                       if(!Visible || (Visible && !Enabled))\r
+                       {\r
+                               IsValid = true;\r
+                       }\r
+                       Control ctrl = Parent;\r
+                       while(ctrl != null)\r
+                       {\r
+                               if(!ctrl.Visible)\r
+                               {\r
+                                       IsValid = true;\r
+                                       return;\r
+                               }\r
+                               ctrl = ctrl.Parent;\r
+                       }\r
+                       isPropertiesChecked = false;\r
+                       if(!PropertiesValid)\r
+                       {\r
+                               IsValid = true;\r
+                               return;\r
+                       }\r
+                       IsValid = EvaluateValid();\r
                }\r
                \r
                protected bool PropertiesValid\r
                {\r
                        get\r
                        {\r
-                               // TODO: throw HttpException, but when? How do I know about all the controls?\r
+                               if(!isPropertiesChecked)\r
+                               {\r
+                                       propertiesValid = ControlPropertiesValid();\r
+                                       isPropertiesChecked = true;\r
+                               }\r
                                return propertiesValid;\r
                        }\r
                }\r
@@ -148,61 +198,191 @@ namespace System.Web.UI.WebControls
                {\r
                        get\r
                        {\r
-                               //TODO: To set the value of renderUplevel. Problem: when, how?\r
                                return renderUplevel;\r
                        }\r
                }\r
                \r
+               protected override void AddAttributesToRender(HtmlTextWriter writer)\r
+               {\r
+                       bool enabled = Enabled;\r
+                       if(!Enabled)\r
+                       {\r
+                               Enabled = true;\r
+                       }\r
+                       AddAttributesToRender(writer);\r
+                       if(RenderUplevel)\r
+                       {\r
+                               if(ID = null)\r
+                               {\r
+                                       writer.AddAttribute("id", ClientID);\r
+                               }\r
+                               if(ControlToValidate.Length > 0)\r
+                               {\r
+                                       writer.AddAttribute("controltovalidate", GetControlRenderID(ControlToValidate));\r
+                               }\r
+                               if(ErrorMesage.Length > 0)\r
+                               {\r
+                                       writer.AddAttribute("errormessage", ErrorMessage, true);\r
+                               }\r
+                               if(Display == ValidatorDisplay.Static)\r
+                               {\r
+                                       writer.AddAttribute("display", Enum.ToString(typeof(ValidatorDisplay), Display));\r
+                               }\r
+                               if(!IsValid)\r
+                               {\r
+                                       writer.AddAttribute("isvalid", "False");\r
+                               }\r
+                               if(!enabled)\r
+                               {\r
+                                       writer.AddAttribute("enabled", "False");\r
+                               }\r
+                       }\r
+                       if(!enabled)\r
+                       {\r
+                               Enabled = false;\r
+                       }\r
+               }\r
+               \r
                protected void CheckControlValidationProperty(string name, string propertyName)\r
                {\r
-                       //TODO: I think it needs to be overridden. I may be wrong!\r
-                       //TODO: When to throw HttpException(...)\r
+                       Control ctrl = NamingContainer.FindControl(name);\r
+                       if(ctrl == null)\r
+                       {\r
+                               throw new HttpException(HttpRuntime.FormatResourceString("Validator_control_not_found",\r
+                                                name, propertyName, ID));\r
+                       }\r
+                       PropertyDescriptor pd = GetValidationProperty(ctrl);\r
+                       if(pd == null)\r
+                       {\r
+                               throw new HttpException(HttpRuntime.FormatResourceString("Validator_bad_control_type",\r
+                                                name, propertyName, ID));\r
+                       }\r
                }\r
-\r
+               \r
                protected virtual bool ControlPropertiesValid()\r
                {\r
-                       // Do I need to do anything? But what?\r
-                       // What do I do with ControlToValidate?\r
-                       return true;\r
+                       if(ControlToValidate.Length == 0)\r
+                       {\r
+                               throw new HttpException(HttpRuntime.FormatResourceString("Validator_control_blank", ID));\r
+                       }\r
+                       CheckControlValidationProperty(ControlToValidate, "ControlToValidate");\r
                }\r
 \r
+               [MonoTODO]\r
                protected virtual bool DetermineRenderUplevel()\r
                {\r
-                       // From where?\r
-                       return true;\r
+                       Page page = Page;\r
+                       if(page == null || page.Request == null)\r
+                       {\r
+                               return false;\r
+                       }\r
+                       if(EnableClientScript)\r
+                       {\r
+                               throw new NotImplementedException();\r
+                               //TODO: I need to get the (Browser->Dom_version_major >= 4 &&\r
+                               //                         Brower->Ecma_script_version >= 1.2)\r
+                       }\r
+                       return false;\r
                }\r
-\r
-               protected abstract bool EvaluateIsValid();\r
-\r
-               [MonoTODO]\r
+               \r
                protected string GetControlRenderID(string name)\r
                {\r
-                       // TODO: What value? What is it?\r
-                       throw new NotImplementedException();\r
+                       Control ctrl = FindControl(name);\r
+                       if(ctrl != null)\r
+                       {\r
+                               return ctrl.ClientID;\r
+                       }\r
+                       return String.Empty;\r
                }\r
-\r
-               [MonoTODO]\r
+               \r
                protected string GetControlValidationValue(string name)\r
                {\r
-                       throw new NotImplementedException();\r
-                       // TODO: What value? What is it?\r
+                       Control ctrl = NamingContainer.FindControl(name);\r
+                       if(ctrl != null)\r
+                       {\r
+                               PropertyDescriptor pd = GetValidationProperty(ctrl);\r
+                               if(pd != null)\r
+                               {\r
+                                       object item = pd.GetValue(ctrl);\r
+                                       if(item is ListItem)\r
+                                       {\r
+                                               return ((ListItem)item).Value;\r
+                                       }\r
+                                       return item.ToString();\r
+                               }\r
+                       }\r
+                       return null;\r
+               }\r
+               \r
+               protected override void OnInit(EventArgs e)\r
+               {\r
+                       OnInit(e);\r
+                       Page.Validators.Add(this);\r
+               }\r
+               \r
+               protected override void OnPreRender(EventArgs e)\r
+               {\r
+                       OnPreRender(e);\r
+                       isPreRenderCalled   = true;\r
+                       isPropertiesChecked = false;\r
+                       renderUplevel       = DetermineRenderUplevel();\r
+                       if(renderUplevel)\r
+                       {\r
+                               RegisterValidatorCommonScript();\r
+                       }\r
+               }\r
+               \r
+               protected override void OnUnload(EventArgs e)\r
+               {\r
+                       if(Page != null)\r
+                       {\r
+                               Page.Validators.Remove(this);\r
+                       }\r
+                       OnUnload(e);\r
                }\r
 \r
-               [MonoTODO]\r
+               [MonoTODO("What_do_I_have_to_do")]\r
                protected void RegisterValidatorCommonScript()\r
                {\r
                        throw new NotImplementedException();\r
-                       // TODO: Still wondering!\r
-                       // Note: This method is primarily used by control developers\r
                }\r
 \r
-               [MonoTODO]\r
-               protected void RegisterValidatorDeclaration()\r
+               [MonoTODO("I_have_to_know_javascript_for_this_I_know_it_but_for_ALL_browsers_NO")]\r
+               protected virtual void RegisterValidatorDeclaration()\r
                {\r
-                       // TODO: Still wondering!\r
-                       // Note: This method is primarily used by control developers\r
-                       // The documentation in M$ refers to: Page_Validators array\r
                        throw new NotImplementedException();\r
+                       //TODO: Since I have to access document.<ClientID> and register\r
+                       // as page validator. Now this is Browser dependent :((\r
+               }\r
+\r
+               [MonoTODO("Render_ing_always_left")]\r
+               protected override void Render(HtmlTextWriter writer)\r
+               {\r
+                       bool valid;\r
+                       if(isPreRenderCalled)\r
+                       {\r
+                               valid = (Enabled && IsValid);\r
+                       } else\r
+                       {\r
+                               isPropertiesChecked = true;\r
+                               propertiesValid     = true;\r
+                               renderUplevel       = false;\r
+                               valid               = true;\r
+                       }\r
+                       if(PropertiesValid)\r
+                       {\r
+                               if(Page != null)\r
+                               {\r
+                                       Page.VerifyRenderingInServerForm(this);\r
+                               }\r
+                               ValidatorDisplay dis = Display;\r
+                               if(RenderUplevel)\r
+                               {\r
+                                       throw new NotImplementedException();\r
+                               }\r
+                               throw new NotImplementedException();\r
+                       }\r
+                       return;\r
                }\r
        }\r
 }\r
index e90102e5c89ba59e374ce1cae3a62be14d17da1c..f26f189e2535de73876553ad551d7b9da820bc5a 100644 (file)
@@ -1,3 +1,15 @@
+2002-03-04      Gaurav Vaish <gvaish@iitk.ac.in>
+
+       * CustomValidator.cs          - Completed. In process realized that
+                    I have to complete / rejuvinate BaseValidator class.
+       * BaseValidator.cs            - Complete rejuvination. Completed 80%
+                   of the job. All that is left is Render(HtmlTextWriter),
+                   DetermineRenderUplevel(), RegisterValidatorCommonScript()
+                   RegisterValidatorDeclaration()
+       * DataGridPagerStyle.cs       - Completed. That adds one more missle
+                   in my artillery.
+       * DataKeyCollection.cs        - Completed. Petty small.
+
 2002-03-03      Gaurav Vaish <gvaish@iitk.ac.in>
 
        * SelectedDatesCollection.cs  - Completed.
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/CustomValidator.cs b/mcs/class/System.Web/System.Web.UI.WebControls/CustomValidator.cs
new file mode 100644 (file)
index 0000000..a5a285d
--- /dev/null
@@ -0,0 +1,93 @@
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class:     CustomValidator\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
+\r
+using System;\r
+using System.Web;\r
+using System.Web.UI;\r
+\r
+namespace System.Web.UI.WebControls\r
+{\r
+       public class CustomValidator : BaseValidator\r
+       {\r
+               private static readonly object ServerValidateEvent = new object();\r
+\r
+               public CustomValidator()\r
+               {\r
+               }\r
+               \r
+               public string ClientValidationFunction\r
+               {\r
+                       get\r
+                       {\r
+                               object o = ViewState["ClientValidationFunction"];\r
+                               if(o != null)\r
+                               {\r
+                                       return (string)o;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["ClientValidationFunction"] = value;\r
+                       }\r
+               }\r
+               \r
+               public event ServerValidateEventHandler ServerValidate\r
+               {\r
+                       add\r
+                       {\r
+                               Events.AddHandler(ServerValidateEvent, value);\r
+                       }\r
+                       remove\r
+                       {\r
+                               Events.RemoveHandler(ServerValidateEvent, value);\r
+                       }\r
+               }\r
+               \r
+               protected override void AddAttributesToRender(HtmlTextWriter writer)\r
+               {\r
+                       base.AddAttributesToRender(writer);\r
+                       if(RenderUplevel)\r
+                       {\r
+                               writer.AddAttribute("evaluationfunction", "CustomValidatorEvaluateIsValid");\r
+                               if(ClientValidationFunction.Length > 0)\r
+                               {\r
+                                       writer.AddAttribute("clientvalidationfunction", ClientValidationFunction);\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               protected override bool ControlPropertiesValid()\r
+               {\r
+                       if(ControlToValidate.Length > 0)\r
+                       {\r
+                               CheckControlValidationProperty(ControlToValidate, "ControlToValidate");\r
+                       }\r
+               }\r
+               \r
+               protected virtual bool OnServerValidate(string value)\r
+               {\r
+                       if(Events != null)\r
+                       {\r
+                               ServerValidateEventHandler sveh = (ServerValidateEventHandler)(Events[ServerValidateEvent]);\r
+                               if(sveh != null)\r
+                               {\r
+                                       ServerValidateEventArgs args = new ServerValidateEventArgs(value, true));\r
+                                       sveh(this, args);\r
+                                       return args.IsValid;\r
+                               }\r
+                       }\r
+                       return true;\r
+               }\r
+       }\r
+}\r
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/DataGridPagerStyle.cs b/mcs/class/System.Web/System.Web.UI.WebControls/DataGridPagerStyle.cs
new file mode 100644 (file)
index 0000000..ecab300
--- /dev/null
@@ -0,0 +1,241 @@
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class:     DataGridPagerStyle\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
+\r
+using System;\r
+using System.Web;\r
+using System.Web.UI;\r
+\r
+namespace System.Web.UI.WebControls\r
+{\r
+       public class DataGridPagerStyle : TableItemStyle\r
+       {\r
+               DataGrid owner;\r
+               \r
+               public static int MODE         = (0x01 << 19);\r
+               public static int NEXT_PG_TEXT = (0x01 << 20);\r
+               public static int PG_BTN_COUNT = (0x01 << 21);\r
+               public static int POSITION     = (0x01 << 22);\r
+               public static int VISIBLE      = (0x01 << 23);\r
+               public static int PREV_PG_TEXT = (0x01 << 24);\r
+\r
+               internal DataGridPagerStyle(DataGrid owner): base()\r
+               {\r
+                       this.owner = owner;\r
+               }\r
+               \r
+               public PagerMode Mode\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(MODE))\r
+                               {\r
+                                       return (PagerMode)ViewState["Mode"];\r
+                               }\r
+                               return PagerMode.NextPrev;\r
+                       }\r
+                       set\r
+                       {\r
+                               if(!Enum.IsDefined(typeof(PagerMode), value))\r
+                               {\r
+                                       throw new NotImplementedException();\r
+                               }\r
+                               ViewState["Mode"] = value;\r
+                               Set(MODE);\r
+                       }\r
+               }\r
+               \r
+               public string NextPageText\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(NEXT_PG_TEXT))\r
+                               {\r
+                                       return (string)ViewState["NextPageText"];\r
+                               }\r
+                               return "&gt;";\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["NextPageText"] = value;\r
+                               Set(NEXT_PG_TEXT);\r
+                       }\r
+               }\r
+               \r
+               public string PrevPageText\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(PREV_PG_TEXT))\r
+                               {\r
+                                       return (string)ViewState["PrevPageText"];\r
+                               }\r
+                               return "&lt;";\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["PrevPageText"] = value;\r
+                               Set(PREV_PG_TEXT);\r
+                       }\r
+               }\r
+               \r
+               public int PageButtonCount\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(PG_BTN_COUNT))\r
+                               {\r
+                                       return (int)ViewState["PageButtonCount"];\r
+                               }\r
+                               return 10;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["PageButtonCount"] = value;\r
+                               Set(PG_BTN_COUNT);\r
+                       }\r
+               }\r
+               \r
+               public PagerPosition Position\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(POSITION))\r
+                               {\r
+                                       return (PagerPosition)ViewState["Position"];\r
+                               }\r
+                               return PagerPosition.Bottom;\r
+                       }\r
+                       set\r
+                       {\r
+                               if(!Enum.IsDefined(typeof(PagerPosition), value))\r
+                               {\r
+                                       throw new ArgumentException();\r
+                               }\r
+                               ViewState["Position"] = value;\r
+                               Set(POSITION);\r
+                       }\r
+               }\r
+               \r
+               public bool Visible\r
+               {\r
+                       get\r
+                       {\r
+                               if(IsSet(VISIBLE))\r
+                               {\r
+                                       return (bool)ViewState["Visible"];\r
+                               }\r
+                               return true;\r
+                       }\r
+                       set\r
+                       {\r
+                               ViewState["Visible"] = value;\r
+                               Set(PG_BTN_COUNT);\r
+                       }\r
+               }\r
+               \r
+               public override void CopyFrom(Style s)\r
+               {\r
+                       if(s != null && !s.IsEmpty && s is TableItemStyle)\r
+                       {\r
+                               base.CopyFrom(s);\r
+                               TableItemStyle from = (TableItemStyle)s;\r
+                               if(from.IsSet(MODE))\r
+                               {\r
+                                       Mode = from.Mode;\r
+                               }\r
+                               if(from.IsSet(NEXT_PG_TEXT))\r
+                               {\r
+                                       NextPageText = from.NextPageText;\r
+                               }\r
+                               if(from.IsSet(PG_BTN_COUNT))\r
+                               {\r
+                                       PageButtonCount = from.PageButtonCount;\r
+                               }\r
+                               if(from.IsSet(POSITION))\r
+                               {\r
+                                       Position = from.Position;\r
+                               }\r
+                               if(from.IsSet(VISIBLE))\r
+                               {\r
+                                       Visible = from.Visible;\r
+                               }\r
+                               if(from.IsSet(PREV_PG_TEXT))\r
+                               {\r
+                                       PrevPageText = from.PrevPageText;\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               public override void MergeWith(Style s)\r
+               {\r
+                       if(s != null && !s.IsEmpty && s is TableItemStyle)\r
+                       {\r
+                               base.MergeWith(s);\r
+                               TableItemStyle with = (TableItemStyle)s;\r
+                               if(with.IsSet(MODE) && !IsSet(MODE))\r
+                               {\r
+                                       Mode = from.Mode;\r
+                               }\r
+                               if(with.IsSet(NEXT_PG_TEXT) && !IsSet(NEXT_PG_TEXT))\r
+                               {\r
+                                       NextPageText = with.NextPageText;\r
+                               }\r
+                               if(with.IsSet(PG_BTN_COUNT) && !IsSet(PG_BTN_COUNT))\r
+                               {\r
+                                       PageButtonCount = with.PageButtonCount;\r
+                               }\r
+                               if(with.IsSet(POSITION) && !IsSet(POSITION))\r
+                               {\r
+                                       Position = with.Position;\r
+                               }\r
+                               if(with.IsSet(VISIBLE) && !IsSet(VISIBLE))\r
+                               {\r
+                                       Visible = with.Visible;\r
+                               }\r
+                               if(with.IsSet(PREV_PG_TEXT) && !IsSet(PREV_PG_TEXT))\r
+                               {\r
+                                       PrevPageText = with.PrevPageText;\r
+                               }\r
+                       }\r
+               }\r
+\r
+               public override void Reset()\r
+               {\r
+                       if(IsSet(MODE))\r
+                       {\r
+                               ViewState.Remove("Mode");\r
+                       }\r
+                       if(IsSet(NEXT_PG_TEXT))\r
+                       {\r
+                               ViewState.Remove("NextPageText");\r
+                       }\r
+                       if(IsSet(PG_BTN_COUNT))\r
+                       {\r
+                               ViewState.Remove("PageButtonCount");\r
+                       }\r
+                       if(IsSet(POSITION))\r
+                       {\r
+                               ViewState.Remove("Position");\r
+                       }\r
+                       if(IsSet(VISIBLE))\r
+                       {\r
+                               ViewState.Remove("Visible");\r
+                       }\r
+                       if(IsSet(PREV_PG_TEXT))\r
+                       {\r
+                               ViewState.Remove("PrevPageText");\r
+                       }\r
+                       base.Reset();\r
+               }\r
+       }\r
+}\r
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/DataKeyCollection.cs b/mcs/class/System.Web/System.Web.UI.WebControls/DataKeyCollection.cs
new file mode 100644 (file)
index 0000000..528c6d8
--- /dev/null
@@ -0,0 +1,82 @@
+/**\r
+ * Namespace: System.Web.UI.WebControls\r
+ * Class:     DataKeyCollection\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
+\r
+using System;\r
+using System.Web;\r
+using System.Web.UI;\r
+\r
+namespace System.Web.UI.WebControls\r
+{\r
+       public sealed class DataKeyCollection : ICollection, IEnumerable\r
+       {\r
+               private ArrayList keys;\r
+               \r
+               public DataKeyCollection(ArrayList keys)\r
+               {\r
+                       this.keys = keys;\r
+               }\r
+               \r
+               public int Count\r
+               {\r
+                       get\r
+                       {\r
+                               return keys.Count;\r
+                       }\r
+               }\r
+               \r
+               public bool IsReadOnly\r
+               {\r
+                       get\r
+                       {\r
+                               return false;\r
+                       }\r
+               }\r
+               \r
+               public bool IsSynchronized\r
+               {\r
+                       get\r
+                       {\r
+                               return false;\r
+                       }\r
+               }\r
+               \r
+               public object this[int index]\r
+               {\r
+                       get\r
+                       {\r
+                               return keys[index];\r
+                       }\r
+               }\r
+               \r
+               public object SyncRoot\r
+               {\r
+                       get\r
+                       {\r
+                               return this;\r
+                       }\r
+               }\r
+               \r
+               public void CopyTo(Array array, int index)\r
+               {\r
+                       foreach(object current in this)\r
+                       {\r
+                               array.SetValue(current, index++);\r
+                       }\r
+               }\r
+               \r
+               public IEnumerator GetEnumerator()\r
+               {\r
+                       return keys.GetEnumerator();\r
+               }\r
+       }\r
+}\r
index a60e50dad66b69b581a028a71a0fd64c7ad04b31..e7f501301b9ae5782722370cf1127fd9975e84b0 100755 (executable)
@@ -32,7 +32,7 @@ All Classes, Interfaces, Structures, Delegates and Enumerations
 * CheckBoxList
 * CommandEventArgs
 & CompareValidator
-CustomValidator
+CustomValidator
 & DataGrid
 * DataGridColumn
 * DataGridColumnCollection
@@ -41,9 +41,9 @@ CustomValidator
 * DataGridItemCollection
 * DataGridItemEventArgs
 * DataGridPageChangedEventArgs
-DataGridPagerStyle
+DataGridPagerStyle
 * DataGridShortCommandEventArgs
-DataKeyCollection
+DataKeyCollection
 & DataList
 * DataListCommandEventArgs
 & DataListItem