Hmm well maybe it's the combination of manually added groups with manually added items? Not sure. I was thinking that using "Text" in the sort descriptor propertyname was perhaps the issue...?
Here is a sample of code that illustrates the issue. To use this, create a windows forms application, and add a RadListView control to Form1 called 'uiColourList', and replace the form1.cs with the code below.
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
Telerik.WinControls.Data;
using
Telerik.WinControls.Enumerations;
using
Telerik.WinControls.UI;
namespace
TelerikListView
{
public
partial
class
Form1 : Form
{
private
List<Colour> colours =
new
List<Colour>();
private
List<Colour> selectedColours =
new
List<Colour>();
public
Form1()
{
InitializeComponent();
setupColourList();
}
private
void
setupColourList()
{
colours.Add(
new
Colour(
"Colour 1"
,
true
,
false
));
colours.Add(
new
Colour(
"Colour 5"
,
true
,
false
));
colours.Add(
new
Colour(
"Colour 2"
,
true
,
false
));
colours.Add(
new
Colour(
"Colour 3"
,
true
,
false
));
colours.Add(
new
Colour(
"Colour 7"
,
true
,
false
));
colours.Add(
new
Colour(
"Colour 6"
,
true
,
false
));
colours.Add(
new
Colour(
"Colour 4"
,
false
,
false
));
colours.Add(
new
Colour(
"Colour 8"
,
false
,
false
));
colours.Add(
new
Colour(
"Colour 9"
,
false
,
false
));
colours.Add(
new
Colour(
"Colour A"
,
false
,
false
));
colours.Add(
new
Colour(
"Colour C"
,
false
,
false
));
colours.Add(
new
Colour(
"Colour D"
,
false
,
true
));
colours.Add(
new
Colour(
"Colour E"
,
false
,
true
));
colours.Add(
new
Colour(
"Colour F"
,
false
,
true
));
colours.Add(
new
Colour(
"Colour B"
,
false
,
true
));
selectedColours.Add(
new
Colour(
"Colour 1"
,
true
,
false
));
selectedColours.Add(
new
Colour(
"Colour F"
,
false
,
true
));
}
private
void
Form1_Load(
object
sender, EventArgs e)
{
uiColourList.Items.Clear();
uiColourList.Groups.Clear();
uiColourList.EnableGrouping =
true
;
uiColourList.EnableSorting =
true
;
uiColourList.ShowCheckBoxes =
true
;
uiColourList.ShowGroups =
true
;
var availableColoursGroup =
new
ListViewDataItemGroup(
"Available Colours"
);
var unavailableColoursGroup =
new
ListViewDataItemGroup(
"Unavailable Colours"
);
var deletedColoursGroup =
new
ListViewDataItemGroup(
"Deleted Colours"
);
availableColoursGroup.Text =
"Available Colours"
;
unavailableColoursGroup.Text =
"Unavailable Colours"
;
deletedColoursGroup.Text =
"Deleted Colours"
;
uiColourList.Groups.Add(availableColoursGroup);
uiColourList.Groups.Add(unavailableColoursGroup);
uiColourList.Groups.Add(deletedColoursGroup);
foreach
(var masterColour
in
colours)
{
var item =
new
ListViewDataItem(masterColour.Name);
item.Tag = masterColour;
if
(selectedColours.Any(m => m.Name == masterColour.Name))
item.CheckState = ToggleState.On;
if
(!masterColour.Available)
item.Group = unavailableColoursGroup;
else
{
item.Group = availableColoursGroup;
}
if
(masterColour.Deleted)
{
item.Group = deletedColoursGroup;
}
uiColourList.Items.Add(item);
}
uiColourList.EnableCustomGrouping =
true
;
uiColourList.SortDescriptors.Add(
new
SortDescriptor(
"Text"
, ListSortDirection.Ascending));
uiColourList.EnableSorting =
true
;
}
}
public
class
Colour
{
public
bool
Deleted {
get
;
set
; }
public
string
Name {
get
;
set
; }
public
bool
Available {
get
;
set
; }
public
Colour(
string
name,
bool
available,
bool
deleted)
{
Name = name;
Available = available;
Deleted = deleted;
}
}
}