所选项目未更新?

时间:2010-03-25 16:55:19

标签: c# asp.net autopostback

我有以下DropDownList控件:

<asp:DropDownList ID="SubjectFilter" runat="server" AutoPostBack="True" onselectedindexchanged="SubjectFilter_SelectedIndexChanged"></asp:DropDownList>

SubjectFilter数据:

BookStore b = new BookStore();
b.LoadFromXML(Server.MapPath("list.xml"));

SubjectFilter.DataSource = b.BooksList.Select(x => x.Subject).Distinct().ToArray();
SubjectFilter.DataBind();
SubjectFilter.Items.Insert(0, new ListItem("הכל", "Default"));

一切都很好。但是,在SubjectFilter_SelectedIndexChanged方法中,SubjectFilter.SelectedValue始终为Default,即使我选择了不同的选项。

有什么问题? 非常感谢你。

4 个答案:

答案 0 :(得分:2)

我猜测上面的代码来自PageLoad事件。您可能希望将其包装在if(!isPostBack)块中。

答案 1 :(得分:1)

请确保Page_Load只在IsPostBack为假时填充下拉列表。

例如

 public void Page_Load(...)
 {
      if (!IsPostback())
          UpdateDisplay();
 }

答案 2 :(得分:1)

你什么时候绑定下拉?你可以任意包装      如果(page.ispostback == false) 在检查其值之前,您可能会对页面加载进行绑定..

答案 3 :(得分:1)

在ASP.NET页面的Init和Load之间分配ViewState。您的事件处理程序在加载后发生。如果您以编程方式设置用户将使用的控件中的内容,则需要在应用 ViewState之前处理。换句话说,将其移至Page_Init。然后,ViewState启动,您将看到处理程序执行时用户实际选择的内容。