2005-09-17 Gonzalo Paniagua Javier * DataGridColumnCollection.cs: track the view state in the newly added items. 2005-09-15 Gonzalo Paniagua Javier * DataGrid.cs: merge column styles too. Fixes bug #76106. * DataGridColumn.cs: new internal method to retrieve the styles without creating an instance for them. 2005-09-15 Sebastien Pouliot * DataControlField.cs, HotSpot.cs, MenuItem.cs, Parameter.cs, Style.cs, TreeNode.cs: Replace _empty_ StateBag.SetDirty () with StateBag.SetDirty (true). 2005-09-14 Sebastien Pouliot * Menu.cs: Fixed parameter orders for CreateStyleRule. 2005-09-13 Chris Toshok * Style.cs: corcompare stuff. * RequiredFieldValidator.cs: more corcompare stuff. * CheckBoxList.cs: clean up some of the interface methods vs protected virtual 2.0 calls. * SubMenuStyle.cs: corcompare says this should implement ICustomTypeDescriptor... sooo, make it. 2005-09-13 Gonzalo Paniagua Javier * TableCell.cs: do the same as HyperLink and others in AddParsedSubobject so that adding a literal control does not remove the existing controls if any. Fixes bug #76078. 2005-09-09 Gonzalo Paniagua Javier * GridView.cs: don't duplicate class attribute. Fixes bug #75936. 2005-09-09 Gonzalo Paniagua Javier * ImageButton.cs: fix invalid cast exception. 2005-09-09 Gonzalo Paniagua Javier * ListItem.cs: throw in AddParsedSubObject if the object is not a LiteralControl. * RadioButtonList.cs: implemented LoadPostData and RaisePostDataChangedEvent. 2005-09-09 Chris Toshok * CheckBox.cs, CheckBoxList.cs, DropDownList.cs, ImageButton.cs, ListBox.cs, RadioButton.cs, RadioButtonList.cs, TextBox.cs: fix up LoadPostData/RaisePostDataChangedEvent. 2005-09-09 Chris Toshok * FontInfo.cs (IsEmpty): new internal property, used by Style.IsEmpty. * Style.cs (IsEmpty): make sure the fontinfo is null or empty as well. 2005-09-08 Gonzalo Paniagua Javier * ListItemCollection.cs: remove obsoleted methods. * ListBox.cs: use IStateManager on the item collection. 2005-09-08 Eyal Alaluf * Use C# 1.0 style of delegate instantiating. Needed to compile Grasshopper (TARGET_J2EE) which uses MS C# 1.0 compiler and not msc. 2005-09-07 Chris Toshok * Calendar.cs (WriteDay): always add BackColor=Silver, ForeColor=White to selected day cells, before copying over the selectedDayStyle, if it exists. (WriteDays): fix nunit test - if the first day of the month falls on the first day of the week, go back one week (effectively adding a row of dates from the previous month.) (WriteTitle): don't copy the control style to the tableTitle, since it might have height specifications, which would make the title look rather off. 2005-09-07 Chris Toshok * ValidationSummary.cs (AddAttributesToRender): we only set display=none if there are no errors. * BaseValidator.cs (OnPreRender): fix a JS error - on submit we call ValidatorOnSubmit, not ValidatorCommonOnSubmit. 2005-09-07 Chris Toshok * ListControl.cs (SelectedIndex): add comment about how you'd think OnSelectedIndexChanged would be called.. and you'd be wrong. (Text): implement in terms of SelectedValue. (TagKey): do the HAVE_CONTROL_ADAPTERS two-step. (LoadControlState): implement - this is where the selected index ArrayList gets stuffed in 2.0. (OnInit): call Page.RegisterRequiresControlState. (OnTextChanged): implement. (RenderContents): for now just chain up to base.RenderContents. (SaveControlState): save our control state properly. (GetSelectedIndices): split this out from SaveViewState to it can be used by both that and SaveControlState. (SaveViewState): mangle this function so it works in both 2.0 and 1.0. (LoadViewState): same. 2005-09-06 Chris Toshok * BaseValidator.cs (AddAttributesToRender): render our ClientID if we weren't assigned an ID. * ValidationSummary.cs (AddAttributesToRender): same. 2005-09-06 Chris Toshok * WebControl.cs: revert the last change. 2005-09-06 Chris Toshok * WebControl.cs (AddAttributesToRender): always render ClientID. * ValidationSummary.cs (Render): same. * BaseValidator.cs (RegisterValidatorDeclaration): use ClientID here. 2005-09-06 Chris Toshok * ValidationSummary.cs (Render): only do the JS stuff when the validators on the page are uplevel. * BaseValidator.cs (Render): remove unnecessary comment. 2005-09-05 Chris Toshok * BaseDataBoundControl.cs (DataSourceID): testing reveals this is stored in the ViewState. 2005-09-02 Chris Toshok * Repeater.cs (GetData): change this slightly so the Repeater doesn't keep a ref to the return value of GetData. 2005-09-01 Chris Toshok * ListControl.cs (AppendDataBoundItems): implement (2.0) (TagKey): same. 2005-09-01 Chris Toshok * System.Web.UI.WebControls/MonthChangedEventArgs.cs, System.Web.UI.WebControls/ValidatedControlConverter.cs, System.Web.UI.WebControls/Xml.cs, System.Web.UI.WebControls/RegularExpressionValidator.cs, System.Web.UI.WebControls/ServerValidateEventArgs.cs, System.Web.UI.WebControls/Menu.cs, System.Web.UI.WebControls/MailMessageEventArgs.cs, System.Web.UI.WebControls/MenuItemStyle.cs, System.Web.UI.WebControls/RangeValidator.cs, System.Web.UI.WebControls/RepeaterItemEventArgs.cs, System.Web.UI.WebControls/MenuItem.cs, System.Web.UI.WebControls/RepeaterCommandEventArgs.cs, System.Web.UI.WebControls/DataGridSortCommandEventArgs.cs, System.Web.UI.WebControls/DataGridCommandEventArgs.cs, System.Web.UI.WebControls/DataGridPageChangedEventArgs.cs, System.Web.UI.WebControls/XmlBuilder.cs, System.Web.UI.WebControls/ImageButton.cs: someone stop me. more corcompare work. 2005-09-01 Chris Toshok * System.Web.UI.WebControls/Button.cs, System.Web.UI.WebControls/ButtonField.cs, System.Web.UI.WebControls/DataControlField.cs, System.Web.UI.WebControls/BaseCompareValidator.cs, System.Web.UI.WebControls/AutoGeneratedField.cs, System.Web.UI.WebControls/CustomValidator.cs, System.Web.UI.WebControls/Content.cs, System.Web.UI.WebControls/BoundField.cs, System.Web.UI.WebControls/AdRotator.cs, System.Web.UI.WebControls/ButtonColumn.cs, System.Web.UI.WebControls/CompareValidator.cs, System.Web.UI.WebControls/AdCreatedEventArgs.cs: More corcompare work. Stub things out, and add attributes. 2005-09-01 Chris Toshok * Button.cs, ButtonField.cs, FontInfo.cs, Style.cs, Xml.cs, CommandField.cs, HyperLinkColumn.cs, Table.cs, RegularExpressionValidator.cs, DataGridPagerStyle.cs, Label.cs, CheckBox.cs, RadioButton.cs, TableStyle.cs, ListControl.cs, Image.cs, BaseCompareValidator.cs, BaseDataList.cs, DataList.cs, TemplateColumn.cs, RangeValidator.cs, ImageField.cs, BaseValidator.cs, CustomValidator.cs, TextBox.cs, ButtonFieldBase.cs, BoundField.cs, CheckBoxList.cs, RadioButtonList.cs, RequiredFieldValidator.cs, AdRotator.cs, Repeater.cs, DropDownList.cs, CheckBoxField.cs, HyperLink.cs, XmlDataSource.cs, Panel.cs, DataGrid.cs, ButtonColumn.cs, CompareValidator.cs, Calendar.cs, ListBox.cs, TableCell.cs, WebControl.cs, Literal.cs, ValidationSummary.cs, ImageButton.cs, TableRow.cs, LinkButton.cs, DataGridColumn.cs, BoundColumn.cs, TableItemStyle.cs: Add some WebCategory and WebSysDescription attributes. 2005-09-01 Chris Toshok * AccessDataSource.cs: corcompare work. * SqlDataSource.cs: same. 2005-09-01 Miguel de Icaza * Various places: make sure that the DefaultValue matches the type. Thanks to Michael for pointing this out. In future audits, you might want to use the following awk command: awk '/DefaultValue/ { v=$0; looking = 1; } /public/ && looking && !/string/ && !/ int / && !/ bool / { print FILENAME; print v; print $0; looking = 0; } /public/ && looking { looking = 0; } ' *.cs The above skips bools, strings and ints as those were fine as we set them. The bug was on the other ones. 2005-08-31 Gonzalo Paniagua Javier * Repeater.cs: fix the build. 2005-08-31 Chris Toshok * Repeater.cs: lots of 2.0 work, much of it c&p'ed from {Base}DataList, and also from debug spew garnered from some Repeater subclass tests on MS. (CreateControlHierarchy): in 2.0 if IsBonudUsingDataSourceID get the IEnumerable by calling GetData(). (DataBind): reset RequiresDataBinding to false (2.0). (DataMember): copy the set implementation from DataList, and add 2.0 code to call OnDataPropertyChanged if we're !Initialiezd. (DataSource): more c&p. (DataSourceID); implement (2.0) (Initialized): implement (2.0) (IsBoundUsingDataSource): implement (2.0) (RequiresDataBinding): implement (2.0) (SelectArguments): implement (2.0) (CreateDataSourceSelectArguments): implement (2.0) (EnsureDataBound): implement (2.0) (GetData): implement. (OnDataPropertyChanged): remove the NIE, but leave the MonoTODO (2.0) (OnDataSourceViewChanged): set RequiresDataBinding to true, but leave the MonoTODO. (2.0) (OnInit): call base.OnInit instead of throwing NIE, but leave the MonoTODO (2.0) (OnLoad): implement. (OnPreRender): implement. (ConnectToDataSource): new method - look for the right control. 2005-08-31 Chris Toshok * XmlDataSourceView.cs: fix the scope of our select. Don't use call SelectNodes on the XmlDocument, not on XmlDocument.DocumentElement. 2005-08-31 Chris Toshok * XmlDataSourceView.cs (.ctor): remove the nodelist parameter. (DoXPathSelect): put the xpath selection stuff here. (ExecuteSelect): call DoXPathSelect if we need to (if nodes == null). * XmlDataSource.cs (IDataSource.GetView): don't do the XPath select here, the view does it. 2005-08-31 Jackson Harper * DataList.cs: Remove some debugging code that was starting to bug me (tee hee). 2005-08-31 Chris Toshok * XmlDataSourceNodeDescriptor.cs: implement IXPathNavigable, and create our Navigator by calling node.CreateNavigator(). 2005-08-31 Chris Toshok * XmlDataSource.cs (GetXmlDataDocument): rename this to GetXmlDocument, and change the return value from XmlDataDocument to XmlDocument. (LoadXmlDataDocument): similar change. (Save): xmlDataDocument -> xmlDocument. (CanBeSaved): there's no ReadOnly attribute. (LoadViewState, SaveViewState, TrackViewState): nuke. (GetHierarchicalView): xmlDataDocument -> xmlDocument. (CacheDuration): stub out with NIE. (CacheExpirationPolocy): same. (CacheKeyDependency): same. (EnableCaching): same. (ReadOnly): nuke. (Data, DataFile): xmlDataDocument -> xmlDocument. (Schema, SchemaFile): nuke. (Transform, TransformFile): xmlDataDocument -> xmlDocument. 2005-08-30 Lluis Sanchez Gual * SubMenuStyle.cs, MenuItemStyle.cs, TreeNodeStyle.cs: Don't use the obsolete IsSet method. * Menu.cs: Implement IPostBackEventHandler.RaisePostBackEvent. * CheckBox.cs: Implement some 2.0 methods. * GridView.cs: Removed some "throw new NotImplementedException" 2005-08-29 Chris Toshok * TreeView.cs: Use the StateBag accessors Ben added, and implement SkipLinkText and Visible. 2005-08-29 Chris Toshok * TreeView.cs: fix typo in an attribute. 2005-08-29 Jackson Harper * PagedDataSource.cs: If it's not a list or collection we don't use a bounded enumerator. 2005-08-29 Chris Toshok * LinkButton.cs: fix some 2.0 Page/ClientScript obsolete warnings. * CheckBox.cs: same. * BaseValidator.cs: same. * DropDownList.cs: same. * ValidationSummary.cs: same. 2005-08-28 Chris Toshok * XmlHierarchyData.cs: fix IHierarchyData.GetParent. 2005-08-26 Chris Toshok * TextBox.cs: implement ValidationGroup and CausesValidation properties. 2005-08-26 Lluis Sanchez Gual * Style.cs: Implemented FillStyleAttributes, GetStyleAttributes and SetDirty. 2005-08-26 Chris Toshok * Unit.cs: implement the 2.0 ToString(IFormatProvider) method. * FontUnit.cs: add two 2.0 ctors, and the 2.0 ToString(IFormatProvider) method. 2005-08-26 Sebastien Pouliot * CheckListBox.cs: Nothing is rendered (i.e. no empty table) in 2.0 if no items are present in the list. * RoleGroup.cs: Added missing attributes. * RoleGroupCollection.cs: Added missing attributes and some (yet-to-be- documented) methods. * TableStyle.cs: *for 2.0* adding a "url({0})" to background image must be done in the HtmlTextWriter (not in the TableStyle). 2005-08-26 Chris Toshok * Calendar.cs (UseAccessibleHeader): implement. (RaisePostBackEvent): some #ifdef ugliness to get this all working propertly between 1.x and 2.0 (WriteDayHeader): if UseAccessibleHeader == true, render header cells as th's, not td's, and add abbr and scope attributes. 2005-08-25 Chris Toshok * Calendar.cs (Caption, CaptionAlign): implement these properties. (Render): if we have a non-empty caption, show it. (WriteCaption): new method, output the caption. 2005-08-25 Chris Toshok * Calendar.cs (Render): Copy the entire style from the Calendar to the Table, not just the font. (WriteDay): don't just write the link/text/etc. Create a LiteralControl as a child of the cell, before the call to OnDayRender, with its text set to the day number. After OnDayRender, set the literal's text to either the number again (if it's not selectable) or the full text of the js __doPostBack hyperlink (if it is.) Also, use cell.RenderControl here so we can render child controls with the id's listed properly (and arguably incorrectly). (ApplyTitleStyleCell): remove. (WriteTitle): apply the titleStyle to the enclosing table, not the table cell containing the month name. Also, copy from the Calendar's ControlStyle to populate tableTitle's style initially. We end up with more (superfluous) style attributes than MS, but it's better than having less. 2005-08-25 Sebastien Pouliot * HyperLink.cs: Fixed 2.0 rendering for Alt and Border|BorderWidth when an image is used. 2005-08-25 Peter Dennis Bartok * Style.cs: Implemented 2.0 CopyTextStylesFrom(), SetRegisteredCssClass() and RegisteredCssClass property 2005-08-25 Sebastien Pouliot * LoginView.cs: Fixed attributes. * Style.cs: Change SetRegisteredCssClass to internal and not to throw an exception to allow pages to work on 2.x. 2005-08-25 Chris Toshok * LinkButton.cs (PostBackUrl): correct the UrlProperty attribute. * Unit.cs: add [Serializable] and the 2.0 specific ToString(), not yet implemented. * HiddenField.cs: stub out this class and label everything MonoTODO. 2005-08-25 Jackson Harper * DataGrid.cs: Disable the pager row if there no paging enabled or available. 2005-08-25 Chris Toshok * SqlDataSourceFilteringEventArgs.cs: add some usings, and fix a typo. * SqlDataSourceSelectingEventArgs.cs: IDbCommand -> DbCommand, and add a using statement. 2005-08-25 Chris Toshok * SqlDataSourceFilteringEventArgs.cs: new 2.0 class, as per corcompare. * SqlDataSourceFilteringEventHandler.cs: new 2.0 delegate, as per corcompare. 2005-08-25 Sebastien Pouliot * Login.cs: Added rendering and fixed parts of the authentication. Now using IStateManager to allow compilation in another assembly (e.g. to test the control under IIS). Needs more tests (error conditions) once we get a "real" Membership provider running. * Style.cs: Fixed IsStyleEmpty (name ;-) and when null is provided (returns true). 2005-08-25 Chris Toshok * SqlDataSourceCommandType.cs: new 2.0 enum, as per corcompare. 2005-08-25 Chris Toshok * AdRotator.cs: stub out enough of the 2.0 methods/properties by calling base.Foo to get the standalone adrotator (1.0) tests to run without throwing exceptions. 2005-08-25 Chris Toshok * ValidationSummary.cs (ValidationGroup): implement. (Render): use Page.GetValidators in .net 2.0, so we can support ValidationGroups. Also,
's get rendered as
in .net 2.0. 2005-08-25 Chris Toshok * ImageButton.cs (TagKey): disable (but flag) the "virtual new" 2.0 attribute modifiers, and revert back to "override". * ListBox.cs (BorderColor): disable (but flag) the "virtual new" 2.0 attribute modifiers, and revert back to "override". (BorderStyle): same. (BorderWidth): same. * TextBox.cs (SaveViewState): implement naively, calling base.SaveViewState. (TagKey): disable (but flag) the "virtual new" 2.0 attribute modifiers, and revert back to "override". 2005-08-25 Peter Dennis Bartok * Style.cs, TableStyle.cs, TableItemStyle.cs, DataGridPagerStyle.cs: Load ViewState for derived classes; no public LoadViewState override exists in those classes * Style.cs: Added 2.0 IsStyleEmpty method 2005-08-25 Jackson Harper * DataGrid.cs: The number of pages set in the pager is specified by PageButtonCount. 2005-08-25 Sebastien Pouliot * LoginView.cs: New (2.0). Work in progress. 2005-08-24 Chris Toshok * Button.cs, DetailsView.cs, FontInfo.cs, Style.cs, Xml.cs, Menu.cs, ObjectDataSource.cs, CheckBox.cs, RadioButton.cs, ListControl.cs, SiteMapPath.cs, BulletedList.cs, DataBoundControl.cs, ListItemCollection.cs, GridView.cs, Wizard.cs, TextBox.cs, CheckBoxList.cs, RadioButtonList.cs, PagedDataSource.cs, FormView.cs, AdRotator.cs, Repeater.cs, DropDownList.cs, MultiView.cs, HierarchicalDataBoundControl.cs, Calendar.cs, ListBox.cs, WebControl.cs, Literal.cs, ValidationSummary.cs, ImageButton.cs, LinkButton.cs, TreeView.cs: Add MonoTODO's for all things that throw NotImplementException. 2005-08-24 Sebastien Pouliot * RoleGroup.cs: New (2.0). Complete implementation. * RoleGroupCollection.cs: New (2.0). Mostly complete implementation. 2005-08-23 Chris Toshok * BaseCompareValidator.cs (GetFullYear): it turns out the docs up on msdn.microsoft.com tell exactly how the .net 2.0 stuff works, even though they were written for the 1.0 stuff. 2005-08-23 Chris Toshok * RepeatInfo.cs: some massaging to support both the 1.x and 2.0 output. Our tests now pass on both mono and ms, with both 1.x and 2.0 profiles. 2005-08-23 Sebastien Pouliot * Login.cs: Throw exception if the specified provider doesn't exists. * LoginStatus.cs: Complete events. 2005-08-22 Jackson Harper * DataGrid.cs (CreateControlHierarchy): Clear out the old pager after creating the controls. (InitializeNumericPager): Now that the pager actually renders properly I can see that I was computing it incorrectly. 2005-08-22 Jackson Harper * DataGrid.cs (RenderTable): Make sure the new table gets the correct style. (CreateColumnSet): Clear the data source columnbs before adding new ones regardless of whether or not a property descriptor was found. (InitializePager): pager_cell needs to be a member so it isn't created more then once per a render. (InitializeNumericPager): Compute start and end more correctly. - Link commands are 1 indexed. (CreateControlHierarchy): Clear the table before we begin rendering. - Revert patch that made adding the pagers conditional. This is incorrect, the pagers are always added. Only their visibility is affected by the pager style. - Save the entire count in the viewstate, not just the rendered count. So when paging is enabled the pager's count isn't broken by postback. 2005-08-22 Chris Toshok * LinkButton.cs (ValidationGroup): implement. (IPostBackEventHandler.RaisePostBackEvent): in the 2.0 profile, pass ValidationGroup to Page.Validate. 2005-08-22 Chris Toshok * ImageButton.cs (ValidationGroup): implement. (IPostBackEventHandler.RaisePostBackEvent): if we cause validation, call Page.Validate properly (in both profiles). 2005-08-22 Chris Toshok * Button.cs (IPostBackEventHandler.RaisePostBackEvent): in the 2.0 case, pass ValidationGroup to Page.Validate. (ValidationGroup): implement using ViewState. 2005-08-22 Chris Toshok * BaseValidator.cs (Text): 2.0 only. implement naively, just get/set base.Text. (OnInit): add 2.0 support for validation groups. (OnUnload): same. 2005-08-22 Sebastien Pouliot * LoginName.cs: New (2.0) web control. * LoginStatus.cs: New (2.0) web control. 2005-08-19 Chris Toshok * LinkButton.cs (ValidationGroup): implement getter/setter. (RaisePostBackEvent): implement naively, by c&p'ing the old implementation of IPostBackEventHandler.RaisePostBackEvent, but making use of the ValidationGroup in the call to Page.Validate. * Button.cs: same. * Style.cs (LoadViewState): set our style flags for all the things we have flags for. Seems like the subclass flags should be handled in overridden LoadViewState methods, but none of the Style subclasses seem to override this method. 2005-08-19 Chris Toshok * TableStyle.cs (Merge, MergeWith): make these look a bit more like Copy/CopyFrom, with the styles checks instead of just ViewState checks. * TableItemStyle.cs: same, only also make Copy/CopyFrom work as in TableStyle.cs. 2005-08-19 Chris Toshok * DataGrid.cs (InitializePager): don't unconditionally set pager_cell to the numeric pager (especially after setting it conditionally to the nextprev pager.) (InitializeNumericPager): the link buttons don't participate in validation. (InitializeNextPrevPager): same. (CreateControlHierarchy): create the top/bottom pagers only if the PagerStyle says too. 2005-08-19 Sebastien Pouliot * TableCell.cs: Added AssociatedHeaderCellID property for 2.0. 2005-08-18 Chris Toshok * DataList.cs (CreateControlHierarchy): Call Controls.Clear() at the start of this method so templates are created properly. 2005-08-18 Dick Porter * Button.cs, DetailsView.cs, Xml.cs, Table.cs, Menu.cs, DataControlButton.cs, Label.cs, ObjectDataSource.cs, CheckBox.cs, RadioButton.cs, ListControl.cs, Image.cs, SiteMapPath.cs, BaseDataList.cs, DataList.cs, BulletedList.cs, DataBoundControl.cs, Login.cs, GridView.cs, CompositeDataBoundControl.cs, Wizard.cs, BaseValidator.cs, TextBox.cs, CheckBoxList.cs, RadioButtonList.cs, FormView.cs, AdRotator.cs, Repeater.cs, MenuItemTemplateContainer.cs, DropDownList.cs, HyperLink.cs, ImageMap.cs, MultiView.cs, CompositeControl.cs, HierarchicalDataBoundControl.cs, Calendar.cs, ListBox.cs, TableCell.cs, WebControl.cs, Literal.cs, BaseDataBoundControl.cs, ValidationSummary.cs, ImageButton.cs, LinkButton.cs, TreeView.cs: 2.0 API fixes and stubs, and attribute fixes 2005-08-18 Sebastien Pouliot * BaseDataList.cs: Added a TODO for DataKeyField as we're not using it anywhere... * DataList.cs: Reworked CreateControlHierarchy to avoid allocating an empty array of objects just to get the number of items. * Login.cs: Implemented OnBubbleEvent and parts of the authentication but we're missing some bits from the class lib to complete all this... 2005-08-17 Jackson Harper * DataGrid.cs: Only create one pager and add it to both the top and bottom of the grid, this way all the id numbers stay the same and we save a bunch of cycles. 2005-08-17 Jackson Harper * DataGrid.cs: The top and bottom pagers are always created. Just the visibility is changed by the PagerStyle::Position. 2005-08-17 Chris Toshok * CompositeControl.cs (RecreateChildControls): implement naively - just call CreateChildControls. We might need to call Controls.Clear() as well, but for the time being, this is ok. 2005-08-17 Sebastien Pouliot * BaseDataList.cs: Completed implementation for 2.0. 2005-08-16 Sebastien Pouliot * BaseDataList.cs: Added missing properties/methods/attributes for 2.0. * DataList.cs: Added missing [Browseable] attribute on SelectedValue. 2005-08-16 Sebastien Pouliot * BaseDataList.cs: Removed old internal ctor as DataList TagKey was fixed for 2.0. * DataList.cs: Implemented {Load|Save}ControlState and OnInit (2.0). Adjusted size and ordering of the ViewState (new element #0 is still unknown). Properly fixed the TagKey in 2.0. * Login.cs: Implemented {Load|Save|Track}ViewState. Added checks for all properties using enums. * Panel.cs: Fixed NoWrap rendering unit test (for 2.0). * TableItemStyle.cs: Fixed attribute rendering to use style to render "nowrap" in 2.0 (it used the HTML nowrap attribute in 1.x). 2005-08-15 Jackson Harper * EditCommandColumn.cs: Use a normal LinkButton. 2005-08-15 Sebastien Pouliot * Image.cs: Don't remove GenerateEmptyAlternateText (2.0) from the viewstate (even if assigned to the default value). * TableRow.cs: Implement TableSection property (2.0). It has no effect on the rendering of the table row. 2005-08-15 Sebastien Pouliot * BaseDataList.cs: Added new [Themeable] and [Localizable] attributes and removed [Bindable] attributes for 2.0. * DataList.cs: Added new 2.0 attributes on class and removed [Bindable] attributes (for 2.0). * DataListCommandEventArgs.cs: Not sealed in 2.0. * DataListItemEventArgs.cs: Not sealed in 2.0. * Image.cs: Fixed [Designer] attribute on class and all [Editor] attributes for URLs. * Login.cs: Fixed [Designer] attribute on class and all [Editor] attributes for URLs. * Table.cs: Fixed [Editor] attribute for 2.0. * TableCellCollection.cs: Fixed [Editor] attribute for 2.0. * TableCell.cs: Fixed [Designer] attribute. Fixed property name for AssociatedHeaderCellID and it's [DefaultValue] attribute. * TableHeaderCell.cs: Fix [DefaultValue] attributes for CategoryText and Scope attributes. * TableRow.cs: Fixed [Designer] attribute. Added missing [DefaultValue] on TableSection attribute. * TableRowCollection.cs: Fixed [Editor] attribute for 2.0. 2005-08-14 Sebastien Pouliot * Image.cs: Fixed attributes for 2.0 profile. * Login.cs: Fixed some attributes and default values. * Table.cs: Fixed attributes for 2.0 profile. Added protected method RaisePostBackEvent (TODO) in 2.0 profile. * TableCell.cs: Fix properties (Bindable, Localizable, Designer...) and added AssociateHeaderCellID property (TODO). * TableCellCollection.cs: Fixed [Editor] attribute for 2.0. * TableFooterRow.cs: New (2.0). TableRow that always shows on each page (if the device requires to breaks the table into multiple pages). This seems to be a "flag" class, the real work will be in Table. * TableHeaderCell.cs: Added CategoryText and Scope properties for 2.0. * TableHeaderRow.cs: New (2.0). TableRow that always shows on each page (if the device requires to breaks the table into multiple pages). This seems to be a "flag" class, the real work will be in Table. * TableItemStyle.cs: Remove [Bindable (true)] from 2.0 profile. * TableRow.cs: Remove [Bindable (true)] from properties and add [Bindable (false)] and [Designer] on class. Added new TableSection property (TODO). * TableRowCollection.cs: Fixed [Editor] attribute for 2.0. * TableSectionStyle.cs: New (2.0). Add Visible to Style - but it's broken (int beta2) for IsEmpty, CopyFrom, MergeWith... * TableStyle.cs: Fixed attributes for 2.0 profile. Added new FillStyleAttributes method (2.0). 2005-08-13 Sebastien Pouliot * Login.cs: New (2.0). Mostly a stub with copy-n-pasted code and attributes from existing controls. * LoginCancelEventArgs.cs: New (2.0). Required to build Login. * LoginCancelEventHandler.cs: New (2.0). Required to build Login. 2005-08-12 Jackson Harper * TableRow.cs: No AutoID for TableRows. 2005-08-12 Jackson Harper * DataGrid.cs (CreateRenderColumns): If we aren't using data binding grab the rendercols from the data source columns. (LoadViewState): Restore the bound columns when reloading the viewstate. (InitializeNumericPager): Create elipsised pagers. (CreateItem): Don't set the item's ID. (CreateItem): Add the control to the table before it is databound so that it's value is saved in the viewstate. (CreateControlHierarchy): Create a fake data source when not using databinding. Don't add controls to the table as they are added in CreateItem now. (PrepareControlHierarchy): Make footers and header non visible if they aren't enabled. 2005-08-12 Chris Toshok * CompositeControl.cs (DataBind, Render, get_Controls): the MSDN docs says these methods/properties "ensure the child controls are created" -- so call EnsureChildControls() before invoking the base class's code. 2005-08-12 Jackson Harper * BoundColumn.cs: Set the controls text instead of adding a literal control. So it is saved in the controls viewstate. 2005-08-11 Jackson Harper * CheckBoxList.cs: Set the tabindex on the checkbox control and don't render it on the main table (Setting it to zero causes it to not be rendered). Also use the invariant culture on the id. 2005-08-11 Dick Porter * CheckBox.cs: Let ViewState manage removals; apply styles and "style" attributes in a surrounding . Fixes unit tests. 2005-08-10 Chris Toshok * Label.cs (LoadViewState): set the Text attribute from our ViewState (if it exists) to clear out any child controls. Fixes jsunit test label/label-child-control-postback.aspx. 2005-08-10 Jackson Harper * PagedDataSource.cs: Respect paging with all data source types. 2005-08-09 Sebastien Pouliot * BaseDataList.cs: Changed Controls property from "virtual new" (2.0 doc) to "override" (monop) to fix the Visible bug (see datalist-invisible.aspx). Fixed AddParsedSubObject not to accept any controls (required due to change to Controls). Implemented DataBind(bool) for 2.0. * DataListItem.cs: Fix the multiple table when extractRows is used. Removed extra span tags by rendering contents (not control). Added support for IDataItemContainer (2.0). 2005-08-08 Jackson Harper * DataGrid.cs: Apply the styles to each item type. 2005-08-08 Jackson Harper * PagedDataSource.cs: If paging is not enabled keep enumerating to the end of the list. 2005-08-08 Sebastien Pouliot * BaseDataList.cs: Remove old compatibility stuff. * DataList.cs: Fix the edit|update for datalist-style-edit.aspx. * WebControl.cs: Always call CreateControlStyle to create the ControlStyle. Fix the exception for datalist-style-edit.aspx. 2005-08-05 Jackson Harper * DataGrid.cs: Don't make the current page index a link in the pager. 2005-08-05 Jackson Harper * DataGrid.cs: Honour PagerPosition. 2005-08-05 Jackson Harper * PagedDataSource.cs: Round PageCount properly. 2005-08-05 Dick Porter * CheckBox.cs: Shut corcompare up a bit more. Still need to figure out how to not use AddAttributesToRender to get it completely silent. * ButtonColumn.cs: Implement Initialize() and InitializeCell() * DataGridColumn.cs: Added the duplicate viewstate manipulation methods 2005-08-05 Chris Toshok * HyperLinkColumn.cs (FormatDataNavigateUrlValue): treat "" as null when it comes to the format string. (FormatDataTextValue): same. 2005-08-04 Chris Toshok * BaseValidator.cs (Validate): only test a validator if it's both enabled and visible. 2005-08-04 Chris Toshok * BaseValidator.cs (AddAttributesToRender): add "enabled" if !Enabled. 2005-08-04 Jackson Harper * DataGrid.cs: Add a new space control for each link. Also make the link's text 1 indexed. Don't add the space after the last item. 2005-08-04 Ben Maurer * LinkButton.cs: Fix up the test suite here. * Panel.cs: Fix up nowrap 2005-08-04 Peter Dennis Bartok * ListBox.cs: Use WriteXXXX to render HTML, this way it matches MS output * ListControl.cs: Clear item list before adding data (again) 2005-08-04 Jordi Mas i Hernandez * Calendar.cs: fixes issues with OnDayRender event and others 2005-08-04 Peter Dennis Bartok * DataGrid.cs(CreateControlHierarchy): Consider the EditItemIndex when creating rows * ListControl.cs(OnDataBinding): Only apply DataTextFormatString to text if DataTextField is bound * EditCommandColumn.cs(InitializeCell): MS inserts a   between the two controls in edit mode, lets do the same 2005-08-03 Jackson Harper * BoundColumn.cs: Respek for the thisExpr when data binding. 2005-08-03 Peter Dennis Bartok * EditCommandColumn.cs: No need to offer edit when in edit mode. Flipped output 2005-08-04 Dick Porter * DataGridColumn.cs: New implementation * DataGrid.cs: * DataGridColumnCollection.cs: Set the DataGridColumn's owner 2005-08-03 Peter Dennis Bartok * WebControl.cs(CopyBaseAttributes): Use Enabled setter to also set tracking var 2005-08-03 Ben Maurer * RepeatInfo.cs: Finally figured out how to use base control 2005-08-03 Jackson Harper * ButtonColumn.cs: Partial implementation. 2005-08-03 Peter Dennis Bartok * DataGridPagerStyle.cs(PageButtonCount): Throw exception on negative value 2005-08-03 Jordi Mas i Hernandez * Calendar.cs: fixes Save/Load state 2005-08-03 Jordi Mas i Hernandez * Calendar.cs: bug fixes 2005-08-03 Jackson Harper * DataGrid.cs: Merge the table style with the render table. Some initial work on the numeric pager. Remove some debugging code. 2005-08-03 Jackson Harper * BoundColumn.cs: Implement Initialize and InitializeCell. When Data is formated it uses the DataFormatString that was set at the time Initialize was called (or null if initialize was never called). 2005-08-02 Jordi Mas i Hernandez * RadioButtonList.cs: bug fixes 2005-08-02 Jordi Mas i Hernandez * CheckBox.cs, RadioButton.cs: mecanism to avoid exposing AddAttributesToRender * RadioButtonList.cs: Implementation 2005-08-01 Jackson Harper * TableStyle.cs: Copy style bit when copying from another style. 2005-08-01 Jackson Harper * PagedDataSource.cs: Implement missing properties, use yield for the Enumerator methods. Only allow the enums to return one page at a time. 2005-08-01 Chris Toshok * HyperLinkColumn.cs (ItemDataBinding): remove incorrect comment. 2005-08-01 Peter Dennis Bartok * WebControl.cs: Track enabled state across sessions 2005-08-01 Peter Dennis Bartok * ListControl.cs(OnDatabinding): Value is equivalent to text if by default 2005-08-01 Jordi Mas i Hernandez * ImageButton.cs: fixes, complete missing parts 2005-07-31 Ben Maurer * TextBox.cs: Html encode for multiline text boxes * HyperLink.cs: Resolve images 2005-07-30 Chris Toshok * BaseValidator.cs: initial version of 2.0 properties ValidationGroup and SetFocusOnError. 2005-07-30 Chris Toshok * HyperLinkColumn.cs (InitializeCell): clean this up. 2005-07-30 Chris Toshok * HyperLinkColumn.cs (FormatDataNavigateUrlValue): just use DataBinder.FormatResult. (FormatDataTextValue): same. (Initialize): call base.Initialize. (ItemDataBinding): new function, get the text/navigateurl and set them on our HyperLink control. (InitializeCell): create a hyperlink control in the Item/EditItem/AlternatingItem case. 2005-07-30 Ben Maurer * RepeatInfo.cs: Handle 0 items situations correctly * HyperLink.cs: Resolve urls correctly * CheckBox.cs: use the correct ID for the label element. * Label.cs: Correct AddParsedSubObject impl. See FAQ 2005-07-29 Chris Toshok * BaseCompareValidator.cs (GetDateElementOrder): implement. 2005-07-29 Chris Toshok * BaseCompareValidator.cs (GetFullYear): implement two ways. The #if'ed out version follows microsoft's docs on msdn, but doesn't match ms's behavior. The other matches their behavior but not their docs. we use the latter. go figure. (get_CutoffYear): implement using CultureInfo.CurrentCulture.Calendar.TwoDigitYearMax. 2005-07-27 Peter Dennis Bartok * FontInfo.cs: - Name property now throws exception when set to null - Names now handles situation where our bit tells us we have a font, but it's not in the StateBag (null removal) * RangeValidator.cs: Removed unused vars 2005-07-29 Ben Maurer * Label.cs: ClientID should be used rather than UniqueID to get the For attribute 2005-07-29 Chris Toshok * BaseValidator.cs (Validatate): not sure if this is entirely correct (some fairly deep testing required), but setting Enabled = false has the effect of setting IsValid = true. 2005-07-29 Ben Maurer * RadioButton.cs: The "remove from groupstate" isn't needed any more, now that statebag is correct. 2005-07-29 Dick Porter * RadioButton.cs: Hide nonstandard API; remove GroupName from the ViewState when it is null. * CheckBox.cs: Hide nonstandard API 2005-07-29 Jordi Mas i Hernandez * Calendar.cs: fixes exceptions, bug fixes, new features * SelectedDatesCollection.cs: Fixes bugs discovered by the tests * CalendarDay.cs: fixes default value 2005-07-28 Ben Maurer * CompositeControl.cs: Stub 2005-07-27 Peter Dennis Bartok * EditCommandColumn.cs: Implemented 2005-07-27 Chris Toshok * RegularExpressionValidator.cs (EvaluateIsValid): "" is valid. 2005-07-27 Peter Dennis Bartok * CustomValidator.cs: Bug fixes (Thanks to Chris for creating the client side code) 2005-07-27 Peter Dennis Bartok * DataGrid.cs: DataGridPagerStyle does not need DataGrid as argument for it's constructor, so remove it * DataGridPagerStyle.cs: Removed DataGrid argument from constructor 2005-07-27 Peter Dennis Bartok * DataGridPagerStyle.cs: Implemented * TableItemStyle.cs (MergeWith): Now only sets style bits it owns * Style.cs: Added Styles enum values for DataGridPagerStyle 2005-07-27 Jordi Mas i Hernandez * Calendar.cs: get the styles right, honors more properties, fixes, fix var names style 2005-07-26 Peter Dennis Bartok * DataGridItem.cs: Implemented 2005-07-26 Chris Toshok * LinkButton.cs (AddParsedSubObject): reversed the order of Controls.Add() and Text = null (set_Text): call Controls.Clear() (RenderContents): use HasControls() for the if test instead of Text != "". * HyperLink.cs (AddParsedSubObject): reversed the order of Controls.Add () and Text = null; 2005-07-26 Peter Dennis Bartok * DataGridItemCollection.cs: Implemented 2005-07-26 Chris Toshok * LinkButton.cs (AddParsedSubObject): copy implementation from HyperLink. (RenderContents): only call writer.Write(Text) if Text != "". Otherwise default to base.RenderContents. 2005-07-26 Chris Toshok * Button.cs, CheckBox.cs, TextBox.cs, DropDownList.cs, ListBox.cs, ImageButton.cs, LinkButton.cs (AddAttributesToRender): add if (Page != null) around my last commit. 2005-07-26 Peter Dennis Bartok * FontInfo.cs, CheckBox.cs, RadioButton.cs, ListItemCollection.cs: Fixed use of literal strings, instead using Consts * Xml.cs, RegularExpressionValidator.cs, TemplateColumn.cs, TextBox.cs, RequiredFieldValidator.cs, Repeater.cs, RepeaterItem.cs, Panel.cs, Literal.cs: Added attributes * BaseValidator.cs: Added missing override 2005-07-26 Chris Toshok * Button.cs, CheckBox.cs, TextBox.cs, DropDownList.cs, ListBox.cs, ImageButton.cs, LinkButton.cs (AddAttributesToRender): call Page.VerifyRenderingInServerFormHere. 2005-07-26 Chris Toshok * BaseValidator.cs: remove some MonoTODO's about the client side validator stuff. 2005-07-26 Jordi Mas i Hernandez * Calendar.cs: selection of dates, state load, save, track, support for new properties, many fixes. 2005-07-26 Miguel de Icaza * Style.cs: Temporary methods to help buliding .NET 2.x 2005-07-25 Peter Dennis Bartok * BaseValidator.cs: Added AssociateControlID (new in sp1), fixed attributes * Xml.cs: Fixed base class, attributes * Button.cs, DataGridColumnCollection.cs, HyperLinkColumn.cs, Label.cs, ListItem.cs, ListControl.cs, CustomValidator.cs, CheckBoxList.cs, AdRotator.cs, DropDownList.cs, HyperLink.cs, DataGrid.cs, ButtonColumn.cs, CompareValidator.cs, Calendar.cs, ListBox.cs, ImageButton.cs, LinkButton.cs: Attribute fixes 2005-07-25 Ben Maurer * RepeatInfo.cs: WOOHOOO! all tests pass. Boy is this class cracktastic. 2005-07-25 Ben Maurer * RepeatInfo.cs: If the repeater has one column, the separators are rendered on a different line 2005-07-25 Peter Dennis Bartok * DataGridSortCommandEventArgs: Sealed class * ButtonColumn.cs, Calendar.cs: Added Attributes 2005-07-25 Peter Dennis Bartok * Button.cs, Style.cs, BaseCompareValidator.cs, RangeValidator.cs, BaseValidator.cs, AdRotator.cs, BoundColumn.cs: Added Attributes 2005-07-25 Peter Dennis Bartok * FontInfo.cs, Style.cs, RangeValidator.cs, ListItemCollection.cs, DropDownList.cs, WebControl.cs, ValidationSummary.cs: Added Attributes 2005-07-25 Chris Toshok * ValidationSummary.cs (AddAttributesToRender): add client side support. (OnPreRender): set the "been here" flag. (Render): add client side support. 2005-07-25 Ben Maurer * RepeatInfo.cs: Split the horiz and vertical cases, because this class has rules that are beyond strange. Continue working to make my tests work. 2005-07-25 Ben Maurer * RepeatInfo.cs: Misc fixes for my test suite. 2005-07-25 Jackson Harper * DataGrid.cs: Set the command name and args on the link buttons. 2005-07-25 Jackson Harper * DataGrid.cs: Lots o implementation. 2005-07-25 Jackson Harper * BoundColumn.cs: Partial implementation to get the DataGrid tests passing again. 2005-07-23 Jordi Mas i Hernandez * Button.cs: fixes events, adds attributes 2005-07-23 Chris Toshok * BaseValidator.cs (GetControlValidateValue): handle ListItems as prop.GetValue results. (Render): fix the static non-uplevel case, so that we display text when there's an error. 2005-07-22 Chris Toshok * RegularExpressionValidator.cs (AddAttributesToRender): only output ValidationExpression if it's != null. 2005-07-22 Chris Toshok * BaseValidator.cs (AddAttributesToRender): fix up the Display rendering such it matches MS's output. (Render): stop using the huge complicated if's for each output stage and move to boolean flags, and fix the static-nonuplevel case, where a validator outputs as nothing but   2005-07-22 Jordi Mas i Hernandez * Calendar.cs: Initial implementation * CalendarSelectionMode.cs: fix enum order 2005-07-22 Sebastien Pouliot * DataList.cs: Rewrote the IRepeatInfoUser.RenderItem to support all (or more?) specific cases - including correct support for separators. Added some (commented) debugging code. * HyperLink.cs: Only render href and target attributes if they're not empty. Add "border=0" when rendering tag. Fix Target default value. 2005-07-22 Peter Dennis Bartok * Style.cs (CopyFrom): Reset must go, MS doesn't do it (See tests) 2005-07-22 Peter Dennis Bartok * Style.cs (CopyFrom): Reset our styles and don't set bits from target explicitly, properties will set them 2005-07-22 Dick Porter * BoundColumn.cs: * ButtonColumn.cs: Initial stubs 2005-07-22 Dick Porter * RadioButton.cs: * CheckBox.cs: Add assembly attributes 2005-07-22 Ben Maurer * HyperLink.cs: Handle non-literal children. 2005-07-21 Ben Maurer * Label.cs: SP1 stuff 2005-07-21 Chris Toshok * BaseValidator.cs (RegisterValidatorCommonScript): remove the NS4 stuff that I c&p'ed from elsewhere - NS4 doesn't support the DOM1 stuff WebUIValidation.js uses, so we don't support it for uplevel rendering. 2005-07-21 Chris Toshok * BaseValidator.cs (DetermineRenderUplevel): include checks for the EcmaScriptVersion and W3CDomVersion. 2005-07-21 Sebastien Pouliot * BaseDataList.cs: Support IEnumerable. * DataList.cs: Fix alternate items. * TableCell.cs: Fixed AddParsedSubObject to work nicely with existing controls and the Text property. 2005-07-21 Ben Maurer * TextBoxMode.cs: Wrong ordering of enum... 2005-07-21 Chris Toshok * BaseValidator.cs (OnPreRender): call DetermineRenderUplevel and cache the results. 2005-07-21 Chris Toshok * BaseValidator.cs (get_PropertiesValid): use our containing NamingContainer, not ourselves, to look up controls. (CheckControlValidationProperty): same. (GetControlRenderID): same. (GetControlValidationValue): same. (AddAttributesToRender): add the display style attribute if Display != Static, and add the value of IsValid if it's false. (DetermineRenderUplevel): use a try block around (Page.Request) since that can raise an exception. (OnPreRender): set pre_render_called, so we can consult it in Render. (Render): complicate this method more to handle more of the Display/pre_render_called permutations. 2005-07-21 Peter Dennis Bartok * CustomValidator.cs: Initial implementation, still work in progress 2005-07-21 Sebastien Pouliot * DataList.cs: Fix rendering for special items (-1). 2005-07-21 Ben Maurer * RepeatInfo.cs: Fix most of the tests. 2005-07-21 Sebastien Pouliot * Image.cs: Call ResolveUrl for ImageUrl and DescriptionUrl properties. Add a border=0 attribute if no style is defined. * TableCell.cs: Use HtmlTextWriterTag (not a string). * TableHeaderCell.cs: Use HtmlTextWriterTag (not a string). * TableRow.cs: Use HtmlTextWriterTag (not a string). 2005-07-21 Sebastien Pouliot * BaseDataList.cs: Fix attributes. * HorizontalAlign.cs: Fix attributes. * Image.cs: Fix attributes and enums checks. * Table.cs: Fix attributes an enums checks. * TableCell.cs: Fix attributes. * TableCellCollection.cs: Fix attributes. * TableItemStyle.cs: Fix attributes and enums checks. * TableRowCollection.cs: Fix attributes. * TableRow.cs: Fix attributes. * TableStyle.cs: Fix attributes and enums checks. * VerticalAlign.cs: Fix attributes. 2005-07-21 Sebastien Pouliot * BaseDataList.cs: Remove/#if-out useless/2.0 stuff. * DataList.cs: Added rendering support when ExtractTemplatesRows property is true (but RepeatInfo needs to be fixed to see it works). * DataListItem.cs: Added rendering support when extractRows parameter is true (but RepeatInfo still needs to be fixed ;-) 2005-07-21 Duncan Mak * HyperLinkColumn.cs: Initial implementation. Todo: Figure out Initialize and InitializeCell. 2005-07-20 Chris Toshok * BaseValidator.cs: don't use Page.FindControl, use this Control's FindControl, so it'll use the same naming container. 2005-07-21 Duncan Mak * DataGridCommandEventArgs.cs: * DataGridPageChangedEventArgs.cs: * RepeaterCommandEventArgs.cs: Fixed visibility. * DataGridPageChangedEventArgs.cs (CommandSource): Fixed typo. * DataGridSortCommandEventArgs.cs (CommandSource): Ditto.. 2005-07-20 Chris Toshok * Button.cs: hook up the client side validation stuff. * ImageButton.cs: same. * LinkButton.cs: same, although it's a little more complicated here. 2005-07-20 Peter Dennis Bartok * DropDownList.cs: - Implemented RaisePostDataChangedEvent() - Spewing postback command if AutoPostBack is true 2005-07-20 Chris Toshok * BaseValidator.cs: another Page != null check when uplevel rendering. 2005-07-20 Chris Toshok * BaseValidator.cs: check Page != null when determining if we're rendering uplevel or not. 2005-07-20 Peter Dennis Bartok * ListItemCollection.cs: Removed obsolete method that's no longer referenced 2005-07-20 Peter Dennis Bartok * DropDownList.cs: Oops. Forgot to implement LoadPostData * ListItemCollection.cs: Added convenience method to have faster PostData handling 2005-07-20 Peter Dennis Bartok * DropDownList.cs: - Automatically select the first item if none are selected - Throw exception if more than one item is selected 2005-07-20 Sebastien Pouliot * DataList.cs: Fix style handling for RepeatLayout.Flow (which isn't handled by RepeatInfo). 2005-07-20 Jackson Harper * DataGrid.cs: Store the data source created columns in a DataGridColumnCollection. This way they can be put in the view state more easily, and accessed without casting. 2005-07-20 Chris Toshok * BaseValidator.cs (AddAttributesToRender): render the client side attributes if we're in uplevel mode. (DetermineRenderUplevel): flesh out a bit - for now basically return true unless the control has it disabled. (OnInit): only add the validator to Page's list if there is, in fact, a page. (OnUnload): same for removal. (OnPreRender): hook up client scripting stuff here. Only the call to RegisterValidatorCommonScript is a for sure thing here, the registering of the submit statement and startup script should probably go elsewhere, but I don't know where. (RegisterValidatorCommonScript): register the