ここに全体のクエリがあります。IcollectionView Filterをデータの特定のクラスなしで使用する方法
私はDataGridを持つWPFアプリケーションを持っています。 Datagridは、自動生成列を持つデータベースからデータをTrueとして取得した後、IcollectionViewにバインドします。データをバインドするとき、または自動生成カラムメソッドで、Excelのようなフィルタポップアップを持つヘッダテンプレートを作成しています。
ユーザーがこれらの列ヘッダーのいずれかをクリックすると、Excelのフィルターと同じユーザーのポップアップが表示されます。ユーザーが値を確認/選択解除して[OK]をクリックすると、ユーザーの選択に基づいてデータがフィルタリングされます。
私はIcollectionViewフィルタ機能を使用すると思った。しかし、フィルタのすべてのソリューションは、データをフィルタリングするクラスを取っています。以下のURL(TraceDataItemクラスが慣れている)のように - データグリッドの自動生成列が真であり、データは何もすることができますよう
Filtering ObservableCollection with ICollectionView
私は固定されたクラスを持つことができません。すべての例で述べたように、固定クラスを持たないデータでこのフィルタ機能を使用する方法はありますか?
説明が必要な場合は、投票を停止するのではなく、質問があれば教えてください。これは私が
var tempCollection = (from c in CurrentDistictValues where c.IsChecked == true select c);
var val = from c in tempCollection select c.Name;
List<object> itemsChecked = new List<object>();
itemsChecked = val.ToList();
string s = String.Join("','", itemsChecked);
StringBuilder t = new StringBuilder(s);
t.Append("'");
t.Insert(0, "'");
s = t.ToString();
のpopup-フィルタで、ユーザーからの確認/未チェック値を取得するために使用していますものですコードused- を追加
はように、ユーザーが選択したすべての値がカンマで区切られています同じことは、データビューのRowFilterに適用することができます -
itemSource.RowFilter = "[" + columnName + "]" + " " + " IN " + "(" + s + ")";
注 - itemSourceが存在し、コード&列名にDataViewのは、我々が適用されているプロパティがされていますフィルタ。
だからItemSourceとしてIcollectionViewを使用する場合、どのようなアプローチが必要ですか?
フィルタリングするプロパティをどのように知っていますか? – mm8
@ mm8ヘッダークリックから列名を取得しています。 FYI、私は小さなデータのためにうまく動作するdataview.RowFilterを使って別の方法を実装しましたが、大きなデータの場合はパフォーマンスが非常に悪いです。だから私はIcollectionViewフィルター機能へのいくつかのリンクを見つけたときに私は解決策を探していた。 –
あなたは反射を使ってICollectionViewをフィルタリングできるはずです。これまでに書いたコードを投稿してください。 – mm8