1

ファイルとフォルダーのリストを入力する DataGridView があります。DataGridView をアルファベット順に並べ替えたいのですが、すべてのフォルダーがファイルの上にあります。一般的な考え方は次のとおりです。

.\folder1\
.\folder2\
.\folder3\
.\file1
.\file2

さまざまなファイルタイプのアイコンを含む列があるため、フォルダー アイコンとファイル アイコンがあります。2 つの列の間にある唯一の違いです。ここに写真があります: ここに画像の説明を入力

したがって、ファイルとフォルダーのアイコンが異なることがわかります。これが私の現在のソート方法です:

private void dgvFiles_SortCompare(object sender, DataGridViewSortCompareEventArgs e) {
    if(e.Column.Index == 1) {
        // ???
    }
    else if(e.Column.Index == 4) {
        string cellValue1 = e.CellValue1.ToString(),
        cellValue2 = e.CellValue2.ToString();

        if(!string.IsNullOrWhiteSpace(cellValue1) && !string.IsNullOrWhiteSpace(cellValue2)) {
            cellValue1 = Regex.Replace(cellValue1, "[^.0-9]", "");
            cellValue2 = Regex.Replace(cellValue2, "[^.0-9]", "");

            int a = int.Parse(cellValue1), b = int.Parse(cellValue2);

            e.SortResult = a.CompareTo(b);

            e.Handled = true;
        }
    }
}

カスタム SortCompare メソッドを使用して、この方法で DataGridView をソートすることは可能ですか? もしそうなら、どのように?

4

2 に答える 2

0

列内に画像をどのように設定したかによって異なりますが、サイズの並べ替えで行ったように and を使用e.CellValue1する代わりに、基になるデータにアクセスするために andを使用します。e.CellValue2GridName.Rows[e.RowIndex1]GridName.Rows[e.RowIndex2]

于 2014-06-09T15:39:08.317 に答える