誰かが私を正しい方向に向けることができることを願っています。ユーザーがさまざまなフォームからさまざまなフィードを選択できるようにするプログラムがあります。選択できるフィードは、WPFのCollectionViewSourceに配置されたAccessデータベースのデータテーブルから取得されます。そのような:
<CollectionViewSource x:Key="BrandsViewSource" Source="{Binding Path=brands,
Source={StaticResource DatabaseDataSetall}}"/>
選択したすべてのフィードには、「id」列の下に一意のIDが付加され、プログラム内のさまざまなリストから選択すると、選択したIDが「feedselections」という配列リストに追加されます。
配列リストはプログラム内で渡されますが、心配する必要はありませんが、WPFのリストボックスに配列リスト'feedselection'の内容を入力してから、リストボックスのすべての追加フィールドに入力する必要があります。リストボックスのコードは次のとおりです。
<Grid Width="800" Height="80" Background="#FFE7AE4A">
<Label Content="{Binding Type}" HorizontalAlignment="Left" Height="27" Margin="8,8,0,0" VerticalAlignment="Top" Width="100" Name="typelabel" Foreground="#FFA4CE52" FontWeight="Bold"/>
<Label Content="{Binding Name}" HorizontalAlignment="Left" Height="27" Margin="115,8,0,0" VerticalAlignment="Top" Width="133"/>
<TextBox HorizontalAlignment="Left" Margin="169,35,0,17" TextWrapping="Wrap" Text="" VerticalAlignment="Stretch" Width="78" Name="foodamount"/>
</Grid>
リストボックスにすべての選択を入力してから、配列にないcollectionviewsource.filterを使用して選択を除外するのが最善かどうかはわかりませんでした。そして、そのオプションを選択した場合、配列、arraylist、list(of t)、またはその他のいくつかのオプションを使用する必要があるかどうかわかりません。
または、リストボックスに配列内のすべてのアイテムを入力し、他のボックスをバインドして、「id」を使用してcollectionviewsourceからデータをフェッチし、データテーブルから残りのデータを検索することもできます。
正直なところ、どうすればいいのかわかりません。私は両方のオプションを実行する方法を探すのに長い時間を費やしましたが、リストからフィルタリングした人を見つけることができないことを除いて、最初のオプションが最も有望なようです!
このWebサイトで、試用版としてフィルターを使用しようとしている誰かのコードを見つけましたが、エラーが発生し続けます。
フォームの作成中にエラーが発生しました。詳細については、Exception.InnerExceptionを参照してください。エラーは次のとおりです。'System.Windows.Data.CollectionViewSource'の初期化により例外がスローされました。行番号「22」および行位置「55」
これは、Filter="WorkerFilter"をcollectionviewsourceに追加したときに発生します。
<CollectionViewSource x:Key="FeedsViewSource" Source="{Binding Path=Feeds,
Source={StaticResource DatabaseDataSetall}}" Filter="WorkerFilter"/>
フィルタハンドラは次のとおりです。
Private Sub WorkerFilter(ByVal sender As Object, ByVal e As FilterEventArgs)
Dim value As Object = CType(e.Item, System.Data.DataRow)("ID")
If (Not value Is Nothing) And (Not value Is DBNull.Value) Then
If (value = "4") Or (value = "5") Then
e.Accepted = True
Else
e.Accepted = False
End If
End If
End Sub
大量のコードと書き込みで申し訳ありませんが、私はできるだけ多くの情報を提供しようとしていました。
使用するたびにワイプされる新しいテーブルをデータベースに作成する必要がある場合でも、データベース内に構築された関係を使用できるという提案をいただければ幸いです。私はかなり必死で、何でも試してみます。