2011-06-29 182 views
3

我正在嘗試使gridview根據gridview上方的下拉列表中選擇哪一年來顯示錶的詳細信息。使用DropDownList填充Gridview

dropdownlist.datasource由datetime形式的年份組成,並從數據庫中的年份表(其中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

我試圖將下拉列表中選定的項目作爲一年(因此在dropdownlist.selecteditem上進行強制轉換),然後獲取Year對象的YearId值。 (另外,我打算把它看作是僞代碼,只是爲了描繪我想要做的事情) –

+0

對不起......我需要更清楚。它不允許我演出。 –

回答

1

你應該做

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

然後使用博尼法斯的查詢。

+0

謝謝!這完美的作品! –

2

爲什麼把它放在一年呢? 你試過這樣:

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

因爲YearId與下拉列表中顯示的年份不同。即。年份:2011; YearId:1 –

+0

是的,下拉列表中的SelectedValue也是該主鍵,即1,對嗎?如果沒有,請向我們提供有關如何填寫下拉列表的更多信息。 – bonifaz

+0

我明白......我如何填寫下拉列表可能是阻止這項工作的原因。我會發布我如何填寫它。 –