C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: BindingSourceでのフィルタについて


(過去ログ 44 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■23666 / inTopicNo.1)  BindingSourceでのフィルタについて
  
□投稿者/ motty (1回)-(2008/08/20(Wed) 10:58:12)

分類:[.NET 全般] 

BindingSourceでフィルタができずに困っていますので質問させてください。

環境:VisualStudio2008評価版 VB

BindingSourceにList(Of T)のオブジェクトをバインディングしているのですが
フィルタプロパティに条件を入れてもフィルタされません。
SupportsFilteringをみるとFalseになっています。
List(Of T)のデータソースではフィルタはできないのでしょうか?
引用返信 編集キー/
■23679 / inTopicNo.2)  Re[1]: BindingSourceでのフィルタについて
□投稿者/ 魔界の仮面弁士 (827回)-(2008/08/20(Wed) 11:30:55)
No23666 (motty さん) に返信
> BindingSourceでフィルタができずに困っていますので質問させてください。

ヘルプにもありますように、フィルタを行うには、そのオブジェクトが
IBindingListView インターフェイスを実装している必要があります。

DataSource に指定したのが、「IBindingListView を Implements し、List(Of T) を継承したクラス」ならば
フィルタリングできる可能性がありますが、ただの List(Of T) では、フィルタリングできません。
引用返信 編集キー/
■23681 / inTopicNo.3)  Re[2]: BindingSourceでのフィルタについて
□投稿者/ motty (2回)-(2008/08/20(Wed) 11:46:31)
No23679 (魔界の仮面弁士 さん) に返信
> DataSource に指定したのが、「IBindingListView を Implements し
というのはどうすればよいのでしょうか?
Implements BindingListViewと記述すればよいのでしょうか?それともBindingListViewのメンバに対する記述を自前で
作成する必要があるのでしょうか?
申し訳ありませんが教えていただけないでしょうか?


引用返信 編集キー/
■23686 / inTopicNo.4)  Re[3]: BindingSourceでのフィルタについて
□投稿者/ Mr.T (271回)-(2008/08/20(Wed) 12:44:26)
Mr.Tです。

>Implements BindingListViewと記述すればよいのでしょうか?それともBindingListViewのメンバに対する記述を自前で
>作成する必要があるのでしょうか?

その通りです。

Public Class test
	Inherits List(Of String)
	Implements System.ComponentModel.IBindingListView

...(ここにはインターフェイスの実装がはいってますが省略)
end Class
ってことですよ。

引用返信 編集キー/
■23687 / inTopicNo.5)  Re[4]: BindingSourceでのフィルタについて
□投稿者/ motty (3回)-(2008/08/20(Wed) 12:51:15)
No23686 (Mr.T さん) に返信
わかりました。私には到底無理なので別の方法を考えることにします。
ありがとうございました。

魔界の仮面弁士もありがとうございました。
解決済み
引用返信 編集キー/
■23691 / inTopicNo.6)  Re[3]: BindingSourceでのフィルタについて
□投稿者/ 魔界の仮面弁士 (828回)-(2008/08/20(Wed) 13:35:46)
2008/08/20(Wed) 13:36:53 編集(投稿者)

No23681 (motty さん) に返信
> メンバに対する記述を自前で作成する必要があるのでしょうか?

だと思います。

そもそも BindingSource 自体には、フィルタリング処理を備わっておらず、
単にデータソースのフィルタリング機能を呼び出しているだけなのですし。


で。IBindingListView を実装済みのクラスというと、DataView ぐらいしかありません。
(あとは、System.Windows.Forms.BindingSource とか)


そのため、どうしても List(Of T) を使いたいのであれば、先ほど書いたように
>>「IBindingListView を Implements し、List(Of T) を継承したクラス」
という実装にするか、または、データは DataView で管理しておき、そこに List(Of T) との
型変換演算子をオーバーロードするなどして対応することになるかと思います。

あるいは、List(Of T) を使用するのは諦めて、一切を DataView(DataTable) で管理するとか。



■23679 への追記
>>> ヘルプにもありますように、フィルタを行うには、そのオブジェクトが
>>> IBindingListView インターフェイスを実装している必要があります。

なお、ここでいうオブジェクトとは、BindingSource.DataSource に指定した物の事ではなく
BindingSource.List プロパティから返される内容の事を指しています。
解決済み
引用返信 編集キー/
■23693 / inTopicNo.7)  Re[4]: BindingSourceでのフィルタについて
□投稿者/ motty (4回)-(2008/08/20(Wed) 13:59:39)
No23691 (魔界の仮面弁士 さん) に返信
> >>「IBindingListView を Implements し、List(Of T) を継承したクラス」
> という実装にするか、または、データは DataView で管理しておき、そこに List(Of T) との
> 型変換演算子をオーバーロードするなどして対応することになるかと思います。
>
> あるいは、List(Of T) を使用するのは諦めて、一切を DataView(DataTable) で管理するとか。

代替方法まで示していただいてありがとうございます。
継承したクラスの作成は、私にとって敷居が高いのでDataViewで管理する方向で
考えて見ます。

23687では呼捨てになってしまった様で申し訳ありませんでした。
今後ともよろしくお願いいたします。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -