所选项目未更新?

发布于 2024-08-27 07:04:45 字数 709 浏览 7 评论 0 原文

我有以下 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,即使我选择了不同的选项。

问题是什么? 非常感谢。

I've got the following DropDownList control:

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

SubjectFilter data:

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"));

Everything loads just fine. However in the SubjectFilter_SelectedIndexChanged method, SubjectFilter.SelectedValue is always Default, even though I'm selecting different options.

What is the problem?
Thank you very much.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

亢潮 2024-09-03 07:04:45

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

I'm guessing the above code is from the PageLoad event. You may want to wrap that in a if(!isPostBack) block.

゛清羽墨安 2024-09-03 07:04:45

确保在 Page_Load 中仅在 IsPostBack 为 false 时填充下拉列表。

例如

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

Make sure that in your Page_Load that you only populate the dropdown when IsPostBack is false.

For example

 public void Page_Load(...)
 {
      if (!IsPostback())
          UpdateDisplay();
 }
梨涡 2024-09-03 07:04:45

你什么时候绑定下拉菜单?你可以将任何东西包裹在一个
if(page.ispostback ==false)
在检查其值之前,您可能会在页面加载时进行绑定。

When are you binding the drop down? You may any to wrap in an
If(page.ispostback ==false)
It looks like you may be binding on page load, before you check its value..

不羁少年 2024-09-03 07:04:45

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

ViewState is assigned between the Init and Load for an ASP.NET page. Your event handlers occur after load. If you are programmatically setting content in the controls that your user will be using, you want to handle that before ViewState is applied. In other words, move it to Page_Init. Afterwards, ViewState kicks in and you'll see what the user actually selected when your handler executes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文