どうも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());
}
カテゴリー: 技術情報