【问题标题】:Populating Gridview with DropDownList使用 DropDownList 填充 Gridview
【发布时间】: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


【解决方案1】:

你应该这样做

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

然后使用 bonifaz 的查询。

【讨论】:

    【解决方案2】:

    为什么要把它改成一年呢? 你有没有试过这个:

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

    【讨论】:

    • 因为 YearId 与下拉列表中显示的年份不同。 IE。年份:2011;年号:1
    • 是的,下拉列表中的 SelectedValue 也将是那个主键,即 1,对吗?如果没有,请向我们提供有关如何填写下拉列表的更多信息。
    • 我明白......我如何填写下拉列表可能是阻止它工作的原因。我会发布我是如何填写的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多