どうもListViewの標準的なインタフェースだけではGroup化とSortの併用はできないみたいです。
現状としては、
- Group化されていない時はSort可能
- Group化されている時はSort不可能
という状態。色々探してみたけど良い方法が見つからず、諦めてListViewItemsを自分でソートする事により解決しました。
何が良い方法を知ってる人がいればよろしくOrz
private void ReorderList(string aGroupedColumn, int aSortIndex)
{
// 要素を外部に取り出しソートする。
List tItems = new List();
foreach (ListViewItem tItem in this.listTickets.Items)
{
tItems.Add(tItem);
}
tItems.Sort(new ListViewItemComparer(aSortIndex));
// 要素をクリア
this.listTickets.Items.Clear();
this.listTickets.Groups.Clear();
// 要素を追加しながらグループ生成
foreach (ListViewItem tItem in tItems)
{
string tKey = tItem.SubItems[aGroupedColumn].Text;
if (this.listTickets.Groups[tKey] == null)
{
this.listTickets.Groups.Add(tKey, tKey);
}
tItem.Group = this.listTickets.Groups[tKey];
}
this.listTickets.Items.AddRange(tItems.ToArray());
}