0

すべての種類の検証をオフにしたいのですDataGridViewが、設定DataGridview.CausesValidation=falseが機能せず、常に「入力データが認識されません」という例外がスローされます

DataGridViewDateTime データ型の列を持つ DataTable にバインドされていますが、11.12.2013、10-12-2013、11/11/2013 など、一部のカルチャでは無効なカスタム日付形式を入力したいと思います。

これらの列でソートする必要があるため、string/varchar の代わりに datetime を保持したいと思います

C# WinForm アプリケーションです。

4

1 に答える 1

0

デフォルトでは、検証は行われません。あなたの場合、データを検証するのではなくDataGridView、基になる型を検証しますDateTime

本当に datetime 型の列を保持したい場合DateTimeは、すべての入力データを、選択した単一の形式に変換する必要があります。実行時に特定のカルチャに変換することで、別の方法で表示することもできます (内部的には既定のカルチャのままです) (ただし、このデータが読み取り専用でない場合は、追加のコードと注意が必要です)。

ここに私が意味するコードスニペットがあります-データをDateTimeカルチャA(Threadまたは自分で定義)のように保存し、特定のカルチャBに変換された文字列として表示します.

ユーザーが任意の形式で日付を入力しようとすると、正しく解析され、カルチャ B に保存されます (ただし、ユーザーにはその特定のカルチャ A で表示されます)。

ここでの問題 - クライアントが保存後に B 以外のカルチャで日付を入力すると、視覚的に B に変換されます。

これは、入力する List のプロパティですDataGridView

        private DateTime _dt1; 
        public string dt1 { 
            get 
            {
                return _dt1.ToString(new CultureInfo("nl-NL"));
            } 
            set
            {
                _dt1 = DateTime.Parse(value);
            }
        }

strings並べ替えの問題について - 表示されていないが、それらの基本的なDateTimeプロパティを比較するカスタム並べ替えを実装するのは比較的簡単です

于 2013-02-25T17:15:01.910 に答える