2011-06-29 46 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

我明白......我如何填写下拉列表可能是阻止这项工作的原因。我会发布我如何填写它。 –