public bool Remove(RadListDataItem item)
        {
            this.OwnerListElement.CheckReadyForUnboundMode();
            if (item == null)
            {
                return(false); //fix null ref. exception
            }

            Telerik.WinControls.Data.NotifyCollectionChangingEventArgs args = new Telerik.WinControls.Data.NotifyCollectionChangingEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove, item);
            this.ownerListElement.OnItemsChanging(args);
            if (args.Cancel)
            {
                return(false);
            }

            item.DataLayer = null;
            item.Owner     = null;

            bool removeValue = this.dataLayer.ListSource.Remove(item);

            Telerik.WinControls.Data.NotifyCollectionChangedEventArgs args1 = new Telerik.WinControls.Data.NotifyCollectionChangedEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove, item);

            this.ownerListElement.OnItemsChanged(args1);
            return(removeValue);
        }
        public void Add(RadListDataItem item)
        {
            this.OwnerListElement.CheckReadyForUnboundMode();

            item.DataLayer = this.dataLayer;
            item.Owner     = this.ownerListElement;

            Telerik.WinControls.Data.NotifyCollectionChangingEventArgs args = new Telerik.WinControls.Data.NotifyCollectionChangingEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Add, item);
            this.ownerListElement.OnItemsChanging(args);
            if (args.Cancel)
            {
                return;
            }

            if (this.dataLayer.ListSource.IsDataBound)
            {
                RadListDataItem newItem = this.dataLayer.ListSource.AddNew();
                newItem.Text = item.Text;
            }
            else
            {
                this.dataLayer.ListSource.Add(item);
            }

            Telerik.WinControls.Data.NotifyCollectionChangedEventArgs args1 = new Telerik.WinControls.Data.NotifyCollectionChangedEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Add, item);
            this.ownerListElement.OnItemsChanged(args1);
        }
        public RadListDataItem this[int index]
        {
            get
            {
                return(this.dataLayer.DataView[index]);
            }
            set
            {
                this.OwnerListElement.CheckReadyForUnboundMode();

                RadListDataItem item = this.dataLayer.ListSource[index];

                Telerik.WinControls.Data.NotifyCollectionChangingEventArgs args = new Telerik.WinControls.Data.NotifyCollectionChangingEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Replace, value, item);
                this.ownerListElement.OnItemsChanging(args);
                if (args.Cancel)
                {
                    return;
                }

                item.DataLayer = null;
                item.Owner     = null;

                if (item.Selected)
                {
                    ((IList)this.ownerListElement.SelectedItems).Remove(item);
                }

                this.dataLayer.ListSource[index] = value;

                value.DataLayer = this.dataLayer;
                value.Owner     = this.ownerListElement;
                Telerik.WinControls.Data.NotifyCollectionChangedEventArgs args1 = new Telerik.WinControls.Data.NotifyCollectionChangedEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Replace, value, item);
                this.ownerListElement.OnItemsChanged(args1);
            }
        }
        public void RemoveAt(int index)
        {
            this.OwnerListElement.CheckReadyForUnboundMode();

            RadListDataItem itemToRemove = this.dataLayer.DataView[index];

            Telerik.WinControls.Data.NotifyCollectionChangingEventArgs args = new Telerik.WinControls.Data.NotifyCollectionChangingEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove, itemToRemove);
            this.ownerListElement.OnItemsChanging(args);
            if (args.Cancel)
            {
                return;
            }

            itemToRemove.DataLayer = null;
            itemToRemove.Owner     = null;
            this.dataLayer.ListSource.RemoveAt(index);
            Telerik.WinControls.Data.NotifyCollectionChangedEventArgs args1 = new Telerik.WinControls.Data.NotifyCollectionChangedEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove, itemToRemove);
            this.ownerListElement.OnItemsChanged(args1);
        }
        public void Insert(int index, RadListDataItem item)
        {
            this.OwnerListElement.CheckReadyForUnboundMode();

            item.DataLayer = this.dataLayer;
            item.Owner     = this.ownerListElement;

            Telerik.WinControls.Data.NotifyCollectionChangingEventArgs args = new Telerik.WinControls.Data.NotifyCollectionChangingEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Add, item);
            this.ownerListElement.OnItemsChanging(args);

            if (args.Cancel)
            {
                return;
            }
            Telerik.WinControls.Data.NotifyCollectionChangedEventArgs args1 = new Telerik.WinControls.Data.NotifyCollectionChangedEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Add, item);
            this.dataLayer.ListSource.Insert(index, item);

            this.ownerListElement.OnItemsChanged(args1);
        }
        public void AddRange(IEnumerable <RadListDataItem> range)
        {
            this.OwnerListElement.CheckReadyForUnboundMode();

            List <RadListDataItem> items = new List <RadListDataItem>(range);

            Telerik.WinControls.Data.NotifyCollectionChangingEventArgs args = new Telerik.WinControls.Data.NotifyCollectionChangingEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Batch, items);
            this.ownerListElement.OnItemsChanging(args);
            if (args.Cancel)
            {
                return;
            }

            this.ownerListElement.SuspendItemsChangeEvents = true;
            foreach (RadListDataItem item in range)
            {
                this.Add(item);
            }
            this.ownerListElement.SuspendItemsChangeEvents = false;
            Telerik.WinControls.Data.NotifyCollectionChangedEventArgs args1 = new Telerik.WinControls.Data.NotifyCollectionChangedEventArgs(Telerik.WinControls.Data.NotifyCollectionChangedAction.Batch, items);
            this.ownerListElement.OnItemsChanged(args1);
        }