【发布时间】:2011-09-25 07:51:13
【问题描述】:
我正在尝试制作一个网格视图,它根据在网格视图上方的下拉列表中选择的年份来显示表格的详细信息。
dropdownlist.datasource 包含日期时间形式的年份,并从数据库中的 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();
【问题讨论】:
-
尝试从外部投射它并获取 yearId,并将 yearId 传递给查询。
-
我正在尝试将下拉列表中的选定项目作为一年(因此在 dropdownlist.selecteditem 上进行转换),然后获取 Year 对象的 YearId 值。 (另外,我打算把它当作伪代码来解读,只是为了描绘我想要做的事情)
-
对不起...我需要更清楚。它不允许我执行演员表。
-
我的意思是尝试这样做
var yearId = ((Year)(drobdownlist.selecteditem)).YearId;然后items.Where(item => item.YearId == yearId)或者你得到一个TypeCastException? -
那行不通。我无法将 type: ListItem 转换为类型 Year
标签: c# asp.net linq gridview drop-down-menu