/// <summary>
        /// Change the state of the control to reflect changes in filtering
        /// </summary>
        protected override void UpdateFiltering()
        {
            IFilterableDataSource filterable = this.VirtualListDataSource as IFilterableDataSource;

            if (filterable == null)
            {
                return;
            }

            this.BeginUpdate();
            try {
                int originalSize = this.VirtualListSize;
                filterable.ApplyFilters(this.ModelFilter, this.ListFilter);
                this.UpdateVirtualListSize();

                // If the filtering actually did something, rebuild the groups if they are being shown
                if (originalSize != this.VirtualListSize && this.ShowGroups)
                {
                    this.BuildGroups();
                }
            }
            finally {
                this.EndUpdate();
            }
        }
        protected override void UpdateFiltering()
        {
            IFilterableDataSource filterable = this.DataSource as IFilterableDataSource;

            if (filterable == null)
            {
                return;
            }

            this.BeginUpdate();
            try {
                filterable.ApplyFilters(this.ModelFilter, this.ListFilter);
                this.UpdateVirtualListSize();
            } finally {
                this.EndUpdate();
            }
        }