- - PR -
DataViewのRowFilterを使用したフィルタ機能
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-08-25 11:40
現在、DataViewのRowFilterを使用したフィルタ機能の実装を
行おうとしているのですが、DataViewのタイプがDateTime型だと Like処理を行えず、エラーとなります。 ※処理は以下になります。 DataViewの中がString型だと問題ないのですが、.netの仕様上 DateTime型でのLike検索は不可能なのでしょうか? ご存知のかた、ご教授お願いします。 FileInfo[] fi = new FileInfo[3]; DataTable dt = new DataTable(); DataRow dr; dt.Columns.Add(new DataColumn("date", typeof(DateTime))); for (int i = 0; i < fi.Length; i++) { dr = dt.NewRow(); dr[0] = DateTime.Now; dt.Rows.Add(dr); } DataView dv = new DataView(dt); dv.RowFilter = "date LIKE '*#/08/25#'"; dataGrid1.DataSource=dv; | ||||
|
投稿日時: 2005-08-25 14:21
LIKE は文字列比較なんで DateTime 型には使えません。
じゃあどうするか。 String に変換して LIKE すればいい。
【参考】 DataColumn.Expression プロパティ [ メッセージ編集済み 編集者: いげ太 編集日時 2005-08-25 14:22 ] [ メッセージ編集済み 編集者: いげ太 編集日時 2005-08-25 14:27 ] [ メッセージ編集済み 編集者: いげ太 編集日時 2005-08-25 18:20 ] | ||||
|
投稿日時: 2005-08-25 17:25
いげ太さん回答ありがとうございます。
>LIKE は文字列比較なんで DateTime 型には使えません。 そうですか。 >じゃあどうするか。 >String に変換して LIKE すればいい。 やはりDataViewをString型に変更して対応するしかないんですね。 また色々試してみます。 ありがとうございました。 | ||||
|
投稿日時: 2005-08-25 18:12
少し言葉足らずでした。
意味を取り違えられているかもしれないので補足します。 # そうでなかったらごめんなさい まず DataView は動的なビューでしかなくデータは持っていません。 データを持っているのは DataTable です。 DataView は DataTable の見え方を定義しているに過ぎないのです。 これをふまえて、 >やはりDataViewをString型に変更して対応するしかないんですね。 この文からは、 DateTime 型のデータを LIKE でフィルタしたいときは データを String 型に変換して DataTable に突っ込まないといけない、 という風に読み取れますがそうではないです。 DataTable に格納するデータはあくまで DateTime 型で、 フィルタをかけるときに DateTime 型から String 型に変換して LIKE しているのです。 |
1