datagridのItemsSourceをデータビューの「DefaultView」として設定しています。DataTableをItemSourceとして使用してWPF Datagridをフィルタリングすると例外が発生する
フィルタリングのためにページにテキストボックスがあります。テキストボックスにテキストを入力すると、DataGridの "Filter"が更新されますが、NotSupportedExceptionがスローされます。 "指定されたメソッドはサポートされていません。"私は何が間違っているのかよくわからない。ここで
は、私はDataTableのを作成する私のコードです:
var dt = new DataTable();
templates[0].FieldList[0].Items.Sort();
foreach (var tag in templates[0].FieldList[0].Items)
{
DataColumn col = new DataColumn() { ColumnName = tag.Name };
dt.Columns.Add(col);
}
foreach (var temp in templates)
{
DataRow row = dt.NewRow();
foreach (var tag in temp.FieldList[0].Items)
{
if (dt.Columns.Contains(tag.Name))
row[tag.Name] = tag.TagValue;
}
dt.Rows.Add(row);
}
return dt;
私はデータグリッドのフィルタを設定する場所それから私は、単にそのデータテーブルの「[既定」
にグリッドのItemsSourceプロパティを設定します。ここです:
:private void SearchText_TextChanged(object sender, TextChangedEventArgs e)
{
LookUpDataGrid.Items.Filter = TextFilter;
}
は次にここに "TextFilter" 方法です3210
[docs](https://msdn.microsoft.com/en-us/library/system.windows.controls.itemcollection.filter(v = vs.110).aspx)には次のように記載されています:CanFilterプロパティを使用する現在の実装が、このプロパティにnull以外の値を割り当てる前にフィルタリングをサポートしているかどうかをテストします。*バインドできるものすべてがフィルタリング可能ではないことを示唆しています。 –
私はちょうどtextchangedにフィルタを設定する前にそれを追加し、あなたは正しいです。それは "偽"です。 これは、おそらく、アイテムとFieldListの複合プロパティに基づいて動的オブジェクトを生成し、データテーブルを作成するのではなくそのコレクションにバインドする必要があるようです。 –
あなたはコレクションビューソースを見たいかもしれません –