To reproduce: public RadForm1() { InitializeComponent(); radListView1.EnableCustomGrouping = true; radListView1.EnableFiltering = true; radListView1.FilterPredicate = Filter; radListView1.ShowGroups = true; ListViewDataItemGroup docGroup = new ListViewDataItemGroup("Documents"); ListViewDataItemGroup diskGroup = new ListViewDataItemGroup("Disks"); radListView1.Groups.Add(docGroup); radListView1.Groups.Add(diskGroup); for (int i = 0; i < 100; i++) { ListViewDataItem item = new ListViewDataItem("g1"); item.Group = docGroup; item.Value = rnd.Next(100); this.radListView1.Items.Add(item); item = new ListViewDataItem("g2"); item.Group = diskGroup; item.Value = rnd.Next(100); this.radListView1.Items.Add(item); } } private void radButton1_Click(object sender, EventArgs e) { radListView1.FilterDescriptors.Add("Value", Telerik.WinControls.Data.FilterOperator.IsGreaterThan, 50); } bool Filter(ListViewDataItem item) { Console.WriteLine(item.Value); int value = 0; if ((int.TryParse(item.Value.ToString(), out value))) { return value < 50; } return true; } Workaround: ListViewGroupedItemsCollection items = docGroup.Items as ListViewGroupedItemsCollection; var innerList = items.GetType().GetProperty("InnerList", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(items); var view = ((RadListSource<ListViewDataItem>) innerList).CollectionView; view.Filter = Filter;