0

列を持つデータ グリッド ビューがあります: IdentityNumber 、 Name 、 Date 。各列は、さまざまなタイプの値を表します。identityNumner は integer 、Name は string 、date は DateTime です。

私の目標は、列のヘッダーをクリックすることであり、並べ替えは上記のタイプに従って行われます。私が見ることができるように、何もしない自動ソートは文字列によるソートです。しかし、どうすれば目標を達成できますか?

問題の解決策を見つけました。以下の回答を確認してください。

4

1 に答える 1

0

私の問題の解決策を見つけました:

フォームの ctor 内で、データ グリッド ビューの SortCompare イベントを登録しました。

    DataGridView1.SortCompare += new DataGridViewSortCompareEventHandler(MyCustomSortFunction);

Iv'e ビルドのカスタム関数は次のとおりです。

void MyCustomSortFunction(object sender, DataGridViewSortCompareEventArgs e)
    {
        try
        {
            // checks if the column's header that was pressed is the identity number - 
            // If so , sort as integer .

            if (e.Column.Name == "colIdentity") 
            {
                int a = Convert.ToInt32(e.CellValue1.ToString());
                int b = Convert.ToInt32(e.CellValue2.ToString());
                e.SortResult = a.CompareTo(b);
                e.Handled = true;
            }
            // checks if the column's header that was pressed is the date - 
            // If so , sort as DateTime .

            else if (e.Column.Name == "colHDate")
            {
                DateTime c = Convert.ToDateTime(e.CellValue1.ToString());
                DateTime d = Convert.ToDateTime(e.CellValue2.ToString());
                e.SortResult = c.CompareTo(d);
                e.Handled = true;
            }
        }
        catch
        { }
    }

私の答えが誰かを助けることを願っています:-) Shuki。

于 2013-09-04T13:09:26.493 に答える