2011-06-29 15 views
3

グリッドビューの上のドロップダウンリストで何年が選択されているかに基づいてテーブルの詳細を示すグリッドビューを作成しようとしています。DropDownListでGridviewを設定する

dropdownlist.datasourceはdatetime形式の年で構成され、Years表(YearIdは主キーですが、表示されるフィールドは表示されません)からデータベースに移入されます。 gridview.datasourceはItemsテーブルの項目で構成されます(YearIdは外部キーです)。

ドロップダウンリストでの選択が変更されると、私が選択した項目のYearId値を取得し、このようなものにするためにGridViewのデータソースを変更する必要があります、残念ながら

items.where(item => item.YearId == ((Year)dropdownlist.selecteditem).YearId) 

、そのこの単純なことはありませんそして

((Year)dropdownlist.selecteditem).YearId 

は有効ではありません。 listitemをYearオブジェクトとしてキャストできないようです。これを行う方法に関するアイデア?

[編集]

ここに、ドロップダウンリストの入力方法を示します。これを行うより良い方法があるならば、(私はそこにいると確信しています)私に知らせるために自由に感じてください!

dropdownlist.DataSource = DataContext.Years; 
dropdownlist.DataValueField = "Year"; 
dropdownlist.DataBind(); 
+0

外部からキャストし、yearIdを受け取り、yearIdをクエリに渡してみてください。 –

+0

私はドロップダウンリストで選択された項目を1年として取得しようとしています(したがって、dropdownlist.selecteditemのキャスト)、YearオブジェクトのYearId値を取得しようとしています。 (また、私は擬似コードとして読みたいと思って、私がしたいことを描写することを意図した) –

+0

申し訳ありません...私はより明確にする必要があります。それは私がキャストを実行することができません。 –

答えて

1

をあなたがボニファスのクエリを使用その後

dropdownlist.DataSource = DataContext.Years; 
dropdownlist.DataValueField = "YearId"; 
dropdownList.DataTextField = "Year"; 
dropdownlist.DataBind(); 

を実行する必要があります。 は、あなたがこれをしようとしています。

+0

ありがとう!これは完全に動作します! –

2

なぜ1年にキャストするのですか?

items.where(item => item.YearId == dropdownlist.SelectedValue) 
+0

YearIdがドロップダウンリストに表示される年と異なるためです。すなわち、年:2011; YearId:1 –

+0

はい、ドロップダウンリストのSelectedValueもそのプライマリキー、つまり1です。そうでない場合は、ドロップダウンリストの記入方法に関する詳細情報をお知らせください。 – bonifaz

+0

私は理解しています...私がドロップダウンリストをどのように埋め込んだのかは、おそらくこれが動作しないようにするものです。私はそれをどのように満たしたのかを投稿します。 –

関連する問題