こんにちは。
私の環境は、
Microsoft Visual Studio Community 2022 (64-bit) Version 17.1.2
Microsoft .NET Framework Version 4.8.04084
で、C#を使っています。
DataTable tbl があります。
tbl.Rows.Count = 37です。
ここで、
dataView view = tbl.DefaultView;
としたところ、
view.Table.Rows.Count = 37
ですが、
view.Count = 0
です。
これまでは、こんなことはなくて、こうした場合は、いつも
view.Count ==view.Table.Rows.Count
で、
view.Count = 37
だったはずでした。
ところが、VSをバージョンアップしたせいか、こんな結果に
なってしまいました。
これは一体どういうことなのでしょうか?
なにが原因か教えていただけますよう、お願い致します。
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.dataview.count
フィルタがかかっているからでは?
Filterをいじっているわけではないので、
view.Filter = ""です。
view.RowStateFilter = CurrentRows
です。
DataTable にもあります。
コピペすればあなたの言う現象が再現できるコードを質問欄に貼ってみてはいかがですか?
おっしゃる通りなのかもしれません。
view.RowStateFilter = CurrentRows となっていたので、そこで
view.RowStateFilter = DataViewRowState.OriginalRows; と、してみると、
希望通り view.Count = 37 となります。これまで、こんな必要がなかったので、驚きです。
また、ご提示された、DataTableにFilterがかかっているという点については、どういうことか分からずじまいです。Filterらしきものを見つけることができません。
どんなことなのか、もう少しお聞かせ願えませんでしょうか。
どうぞよろしくお願い致します。
再現できるコードを作ってみましてから、質問させていただきます。
ちょっと、時間がかかるかもしれませんので、あらかじめ、予定をお伝えさせていただきます。
申し訳ございません。
皆様に時間を使わせてしまい、申し訳ありません。
やっと、原因がわかりました。
tbl.AcceptChanges();
を
tbl.Rows[i].Delete();
の後でなくて、前に書いていました。
レベルの低い質問で恐縮しますが、これが原因とは。
回答1件
あなたの回答
tips
プレビュー