【发布时间】:2013-11-08 15:06:52
【问题描述】:
第一次在这里发帖。
我在使用一个简单的 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>
【问题讨论】:
-
您好,您的下拉列表有属性 AutoPostBack True?
-
@user2969391 你能显示网格视图和下拉列表设计视图吗?
-
@user2969391
DataSource有数据吗?我的意思是您填写Persons列表的位置 -
是的,下拉列表具有自动回发 True。人员列表是静态的,我在页面加载时填写。
-
您的 page_load 中有回发吗?
标签: c# asp.net gridview drop-down-menu