2010-06-19 Marek Habersack * DataPager.cs: when rendering the ID attribute, use ClientID 2010-06-18 Marek Habersack * NumericPagerField.cs: CreateDataPagers outputs correct page number in query mode. Fixes bug #615315 Rendering changes to match .NET * DataPagerField.cs: if query string has been handled and query mode is in effect, return true. Fixes bug #615315 2010-05-18 Marek Habersack * ListView.cs: if data source has pageable data, get total count from the source's DataSourceCount property. Fixes bug #604053 2009-12-15 Marek Habersack * NextPreviousPagerField.cs: HandleEvent doesn't call DataPager.SetPageProperties with negative start index. Also, if _totalRowCount is <= 0, new start index is not calculated using it. Fixes bug #545417 * ListViewPagedDataSource.cs: when server paging is on, data items are counted from index 0 instead of from the value stored in StartRowIndex. Fixes bug #545417 * ListView.cs: CreateChildControls doesn't create empty data item if called with fake data. When a view reports it can page data, ListViewPagedDataSource passed to item creation methods has AllowServerPaging set to true. Fixes bug #545417 When CreateChildControls is called with fake data, ListViewPagedDataSource has its TotalRowCount property set to the actual total row count, not zero. Fixes bug #545417 2009-09-15 Marek Habersack * ListView.cs: CreateChildControls calls EnsureDataBound only if we're not in post-back and if data binding is required. 2009-09-08 Marek Habersack * ListView.cs: if total row count has been retrieved from the view, don't reset it to the number of items returned from the data source. Fixes bug #535701 2009-09-01 Marek Habersack * ListView.cs: LoadControlState must call OnTotalRowCountAvailable after restoring the state, so that all parties subscribed to that event are given chance to react accordingly. SetPageProperties should use values stored in PagePropertiesChangingEventArgs arguments after handler returns. 2009-06-25 Marek Habersack * LinqDataSource.cs: make ContextType not throw an exception when ContextTypeName is not set, but rather return a null in that case. 2009-03-03 Marek Habersack * ListView.cs: SetPageProperties invoked the PagePropertiesChanging event with the startRowIndex and maximumRows parameters reversed. Fixes bugs #481250 and #481252 * DataPagerField.cs: GetQueryModeStartRowIndex must return 'true' if in query mode. Fixes bug #481248 2008-11-28 Marek Habersack * ListView.cs: use the _correct_ operator when checking whether selected item index is within the data keys range. 2008-11-27 Marek Habersack * ListView.cs: fixes in DoUpdate and DoDelete - check must be made that the requested item index is _smaller_ than the number of keys, not _bigger_. Enable using the lambda expression in CreateItemsInGroups - the gmcs bug preventing that was fixed. 2008-11-20 Marek Habersack * ListView.cs: implemented the EditItem property. Use ConvertEmptyStringToNull in ExtractItemValues. 2008-11-19 Marek Habersack * ListView.cs: added paremeter checks to AddControlToContainer. CreateInsertItem must instantiate the template and call raise the ItemCreated event. Added parameter checks to FindPlaceholder 2008-11-18 Marek Habersack * ListViewContainer.cs: added * ListView.cs: implemented grouping support. With this ListView is feature complete. Refactored grouped/non-grouped rendering common code into separate methods. FindPlaceholder now looks for the placeholder recursively. Implemented forgotten UpdateItem method. Align group with empty items if there are no more data items. Each group is contained within ListViewContainer. * ListViewTableCell.cs: added 2008-11-15 Marek Habersack * ListViewInsertEventArgs.cs: implemented the Values property. * ListView.cs: CreateChildControls uses the Items collection to store the created items. InsertNewItem triggers page validation if necessary. Part of InsertNewItem code refactored to DoInsert. Implemented handling of the Insert and Select commands. * TemplatePagerField.cs: implemented all the code. * DataPager.cs: CreatePagerFields now adds the new pager field control before creating data pagers in it and before binding to data. This avoids situation in which the field is parentless. FindPageableItemContainer now properly finds the container if it's placed directly in the Page. {Load,Save}ViewState don't use a Pair anymore, object array is used for compatibility with MS.NET * NumericPagerField.cs, NextPreviousPagerField.cs, DataPagerFieldCommandEventArgs.cs: minor refactoring * ListViewSelectEventArgs.cs: implemented all the code. * ListViewInsertedEventArgs.cs: Values allocates the dictionary on demand now. Initialize all the properties in constructor * DataPagerCommandEventArgs.cs: added * DataPagerField.cs: implemented IsTrackingViewState * DataPagerFieldItem.cs: implements the INonBindingContainer interface. 2008-11-13 Marek Habersack * ListView.cs: implemented support for Edit, Update and Delete. Implemented ExtractItemValues. * ListViewDataItem.cs, ListViewItem.cs: implemented OnBubbleEvent. * ListViewDeletedEventArgs.cs, ListViewUpdateEventArgs.cs, ListViewEditEventArgs.cs, ListViewCancelEventArgs.cs, ListViewDeleteEventArgs.cs, ListViewUpdatedEventArgs.cs: implemented all the properties and methods. * HelperExtensions.cs: added 2008-11-06 Marek Habersack * ListView.cs: implemented the sorting capability. * ListViewSortEventArgs.cs: implemented all the methods and properties. 2008-11-01 Marek Habersack * ListView.cs: do not instantiate the layout template more than necessary. * NextPreviousPagerField.cs: moved some common code to the base class (the GetQueryModeStartRowIndex method) * DataPager.cs: do not call SetPageProperties more than necessary. * NumericPagerField.cs: implemented * DataPagerField.cs: added a helper method, GetQueryModeStartRowIndex, to be used by all the concrete implementations to calculate the starting row index in the query mode. 2008-10-31 Marek Habersack * ListView.cs: use StartRowIndex and MaximumRows properties when calculating the total row count server paging case and when assigning to corresponding properties of the paged data source. 2008-10-30 Marek Habersack * DataPagerFieldCollection.cs: implemented most of the methods and properties, so that using the DataPager is possible now. * PagePropertiesChangingEventArgs.cs: implemented all the methods and properties. * ListView.cs: {Save,Load}ControlState now uses constants to index state arrays. Total row count is stored in the control state. CreateChildControls () now uses dummy data to initialize child controls if no items were found after postback. CreateChildControls (IEnumerable, bool) now properly calculates total row count, calls OnTotalRowCountAvailable after creating the child controls and returns the total row count instead of the number of created child controls. This makes pager work correctly. Implemented SetPageProperties () to support paging. * NextPreviousPagerField.cs: Correctly order the Next/Previous buttons. When creating buttons, cast the new control properly before assigning properties. * TemplatePagerField.cs: added (stub) * DataPager.cs: added missing class attributes (ParseChildren, PersistChildren and SupportsEventValidation). {Save,Load}ControlState now use constants to index the state arrays. Properly implemented FindPageableItemContainer - it now looks for the container up the parenthood chain, querying all the naming containers for the named control. SetUpForNewContainer now accepts an additional parameter, so that the SetPageProperties method is called on the container whenever necessary. * NumericPagerField.cs: implemented the CreateField method. * ListViewPagedDataSource.cs: implemented data source enumerators. * DataPagerFieldItem.cs: implemented all the methods and properties. 2008-10-21 Atsushi Enomoto * LinqDataSource.cs : set ContextTypeName too when ContextType is set. 2008-10-09 Atsushi Enomoto * LinqDataSource.cs : implement ContextType/ContextTypeName. * LinqDataSourceView.cs : some ExecuteSelect() implementation. Cache type members which are from reflection. 2008-10-08 Atsushi Enomoto * LinqDataSource.cs, LinqDataSourceView.cs : some more implementation. 2008-09-30 Marek Habersack * ListView.cs: implemented all the events. CreateChildControls works with non-ICollection data sources now. CreateItemsWithoutGroups now counts items placed in the container and stores the container in a field, so that RemoveItems can properly delete the child controls. Implemented the RemoveItems method. Implemented Load/SaveControlState. Implemented LoadViewState. Implemented OnBubbleEvent. Implemented all the On* methods. * ListViewCommandEventArgs.cs: implemented the CommandSource and Item properties. * ListViewItemEventArgs.cs: implemented the Item property. 2008-09-18 Atsushi Enomoto * LinqDataSource.cs, LinqDataSourceView.cs LinqDataSourceContextEventArgs.cs LinqDataSourceDeleteEventArgs.cs LinqDataSourceDisposeEventArgs.cs LinqDataSourceInsertEventArgs.cs LinqDataSourceSelectEventArgs.cs LinqDataSourceStatusEventArgs.cs LinqDataSourceUpdateEventArgs.cs : easy implementation parts. 2008-09-18 Atsushi Enomoto * LinqDataSource.cs, LinqDataSourceView.cs LinqDataSourceContextEventArgs.cs LinqDataSourceDeleteEventArgs.cs LinqDataSourceDisposeEventArgs.cs LinqDataSourceInsertEventArgs.cs LinqDataSourceSelectEventArgs.cs LinqDataSourceStatusEventArgs.cs LinqDataSourceUpdateEventArgs.cs LinqDataSourceValidationException.cs : stubbed out. 2008-05-08 Marek Habersack * DataPager.cs, DataPager.cs, DataPagerFieldCollection.cs, DataPagerFieldCommandEventArgs.cs, DataPagerField.cs, DataPagerFieldItem.cs, InsertItemPosition.cs, IPageableItemContainer.cs, ListViewCancelEventArgs.cs, ListViewCancelMode.cs, ListViewCommandEventArgs.cs, ListView.cs, ListViewDataItem.cs, ListViewDeletedEventArgs.cs, ListViewDeleteEventArgs.cs, ListViewEditEventArgs.cs, ListViewInsertedEventArgs.cs, ListViewInsertEventArgs.cs, ListViewItem.cs, ListViewItemEventArgs.cs, ListViewItemType.cs, ListViewPagedDataSource.cs, ListViewSelectEventArgs.cs, ListViewSortEventArgs.cs, ListViewTableRow.cs, ListViewUpdatedEventArgs.cs, ListViewUpdateEventArgs.cs, NextPreviousPagerField.cs, NumericPagerField.cs, PageEventArgs.cs, PagePropertiesChangingEventArgs.cs, TemplatePagerField.cs: added. NOTE: this is code in progress! It is not fully implemented and usable, please do not file bug reports for the code - patches are gladly accepted :)