第一次在这里发帖。
我在一个简单的 web 应用程序中遇到了一个特定问题,我陷入了将 gridview 绑定到下拉列表并在 ddl 中显示所选项目的内容的问题。
我可以很好地将gridview绑定到ddl,它会显示包含在ddl的所有项目中的信息。但我一生都无法弄清楚如何在网格视图中只显示选定的对象信息。
而且我也无法从 ddl 的 onSelectedItemChanged 重新触发数据绑定。
protected void ddlPersons_SelectedItemChanged(object sender, EventArgs e)
{
Label1.Text = "message";
this.GridView1.DataSource = Persons;
this.GridView1.DataBind();
}
(Persons 是我已确认包含我需要的信息的对象列表。标签只是用来查看方法是否触发。它也可以,但数据绑定不会。)
我从stackoverflow尝试了许多不同的答案,但似乎没有一个对我的项目有效,我完全不知道我应该做什么。
更新 了我的页面加载。在 loadList() 方法中,我填写了 Persons 列表。它的内容不会改变。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
loadList();
}
}
至于使用 ddlPersons.SelectedItem 过滤哪些内容,我不知道这是怎么做的。我的意思是我已经尝试使用不同的方式来访问选定的对象,但仍然不成功。
更新 2
gridview 和 dropdownlist 的标记
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField HeaderText ="Nr">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.getSetFirstName") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="Namn">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.getSetFirstName") %>
<%# DataBinder.Eval(Container, "DataItem.getSetLastName") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="Ålder">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.getSetAge") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:DropDownList ID="ddlPersons" runat="server" OnSelectedItemChanged="ddlPersons_SelectedItemChanged" AutoPostBack="True" OnSelectedIndexChanged="ddlPersons_SelectedItemChanged">
</asp:DropDownList>