下拉列表未触发SelectedIndexChanged事件

4

我有一个下拉列表(dr1),它应该触发dr2的更新,而不影响dr3。问题是,dr1触发了更新,但没有进入dr1_SelectedIndexChanged。我知道这是因为标签没有更改,暂停也没有发生。

以下是我的HTML代码:

<form runat="server">
<asp:ScriptManager ID="sm" runat="server" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="5">
    <ProgressTemplate>
        <span style="color: Red">Updating.....</span>
    </ProgressTemplate>
</asp:UpdateProgress>
<asp:DropDownList ID="dr1" AutoPostBack="true" OnSelectedIndexChanged="dr1_SelectedIndexChanged" runat="server" />
<asp:UpdatePanel ID="updpnl" runat="server">
    <ContentTemplate>
        <asp:DropDownList ID="dr2" runat="server" />
        <asp:Label ID="lbl" runat="server" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="dr1" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>
<asp:DropDownList ID="dr3" runat="server" />
</form>

我的代码后端:

void Page_Load()
        {
            if (!IsPostBack)
            {
                java.Text = "<script language=\"JavaScript1.2\" type=\"text/javascript\">var sess = \"" + Session["username"] + "\";var user = \"" + Request.ServerVariables["LOGON_USER"].Replace("\\", "\\\\") + "\";</script>";
                dr1.Items.Clear();
                dr2.Items.Clear();
                dr3.Items.Clear();
                dr1.Items.Add("");
                dr1.Items.Add("A");
                dr1.Items.Add("B");
                dr1.Items.Add("C");
                dr1.Items.Add("D");
                dr3.Items.Add("");
                dr3.Items.Add("Allo");
                dr3.Items.Add("Bonjour");
                dr3.Items.Add("Ola");
            }
        }

        protected void dr1_SelectedIndexChanged(Object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(5000);
            lbl.Text = DateTime.Now.ToString();
            dr2.Items.Clear();
            dr2.Items.Add("");
            for (int i = 1; i <= 4; i++)
                dr2.Items.Add(dr1.SelectedValue + i);
        }

我希望有人能够帮助我。

谢谢。


4
请删除 Sleep(5000); 这行代码,它不应该出现在生产代码中。这会有意地减慢程序运行速度,这不是一个好主意。 - Jack Marchetti
3个回答

2

尝试修改这一行:
<asp:AsyncPostBackTrigger ControlID="dr1" EventName="SelectedIndexChanged" />

并移除 EventName="SelectedIndexChanged" 属性。


0
尝试将所有内容都包裹在UpdatePanel中,并将UpdatePanel的UpdateMode="Always"进行设置。

-1

终于成功了。在逐步删除代码并逐个添加回来后,它终于成功了。

我还删除了dll并重新构建了它。这似乎有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接