问题描述
我有以下简单的code:
I have following simple code:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testForm.aspx.cs" Inherits="Orbs.testForm" %>
<html>
<body>
<form id="form1" runat="server">
<asp:DropDownList ID="dropdown1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="dropdown1_SelectedIndexChanged" ViewStateMode="Enabled">
<asp:ListItem Value="1" Text="Item 1" />
<asp:ListItem Value="2" Text="Item 2" />
<asp:ListItem Value="3" Text="Item 3" />
<asp:ListItem Value="4" Text="Item 4" />
<asp:ListItem Value="5" Text="Item 5" />
</asp:DropDownList>
<asp:Label runat="server" ID="label1"></asp:Label>
</form>
</body>
</html>
这是背后
using System;
namespace Orbs {
public partial class testForm: System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
label1.Text = "???!!";
}
protected void dropdown1_SelectedIndexChanged(object sender, EventArgs e) {
label1.Text = "Fired on " + dropdown1.SelectedValue;
}
}
}
当我第一次进入页面后,卷标1
显示??? !!
。现在我选择下拉列表中的项目和卷标1
显示正确的值,但是当我选择下拉列表中的第一个项目,它再次显示了 ??? !!
而不是射击1
When the first time I enter the page, label1
shows '???!!'
. Now I select an item from dropdown and label1
shows correct value but when I select first item in dropdown, it again shows ???!!
instead of Fired on 1
我哪里做错了吗?
编辑:我发现如果我添加选择=真
任何在下拉列表中的项目,该项目成为受害者,也不会触发事件
I noticed if I add Selected="True"
to any of the items in the dropdown, that item becomes victim and won't fire the event!
推荐答案
我解决了自己的问题,
我读的地方,关闭 ViewStateMode
将导致的DropDownList
无法正常工作。在我的web应用程序,我不得不关掉 ViewStateMode
来实现一些全局任务和逐案开启的情况下。
I read somewhere that turning off the ViewStateMode
will cause DropDownList
not work properly. In my web application I had to turn off ViewStateMode
to achieve some global task and turn it on case by case.
在的DropDownList
不工作,我甚至试过不知怎的打开 ViewStateMode
打开 ViewStateMode
的页面和主页面,但仍的DropDownList
没有工作。它只有当我在的web.config
打开 ViewStateMode
工作。
Somehow turning on ViewStateMode
on DropDownList
is not working, I even tried turning on ViewStateMode
for page and master page but still DropDownList
didn't work. it only worked when I turned on ViewStateMode
in web.config
.
作为的web.config打开
是不是一种选择,我发现另一种解决方案。我包括在这里希望它帮助别人。 ViewStateMode
As turning on ViewStateMode
in web.config
is not an option, I found and alternate solution. I'm including it here hoping it help someone.
- 在
HiddenField
添加到您的窗体。 - 在
的Page_Load
比较HiddenField
的价值与Request.Forms [DropDownList1.UniqueID]
- 如果他们是不同的,叫
的SelectedIndexChanged
手动 - 设置
HiddenField
的值的值Request.Forms [DropDownList1.UniqueID]
。
- Add a
HiddenField
to your form. - In
Page_Load
compare value ofHiddenField
withRequest.Forms[DropDownList1.UniqueID]
- if they are different, call
SelectedIndexChanged
manually - Set the value of
HiddenField
to value ofRequest.Forms[DropDownList1.UniqueID]
.
这篇关于在DropDownList中的第一项不火在所有的SelectedIndexChanged的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!