c#中不必要的下拉事件触发

时间:2017-12-11 05:09:38

标签: c# asp.net drop-down-menu

我的应用程序中有这些下拉

<asp:DropDownList ID="ddl1" runat="server" DataTextField="Val" DataValueField="ValID" AutoPostBack="true" OnSelectedIndexChanged="ddl1change"></asp:DropDownList>

<asp:DropDownList ID="ddl2" runat="server" DataTextField="Val" DataValueField="ValID" AutoPostBack="true" OnSelectedIndexChanged="ddl1change"></asp:DropDownList>

<asp:DropDownList ID="ddl3" runat="server" DataTextField="Val" DataValueField="ValID" AutoPostBack="true" OnSelectedIndexChanged="ddl1change"></asp:DropDownList>

这是cs页面中的OnSelectedIndexChanged函数

 protected void ddl1change(object sender, EventArgs e)
    {
        try
        {
            DropDownList ddltemp = sender as DropDownList;

            if (ddltemp.SelectedItem.Text != "---Select---")
            {
                selectedltrDropdownText = ddltemp.SelectedItem.Text;                    
                PassFileName(selectedltrDropdownText);                    
            }           
        }
        catch (Exception ex)
        {
            _logger.Error("Failed." + ex.Message + "; Stack Trace :" + ex.StackTrace);
        }

    }

这是我加载下拉列表的方式

protected void Page_Load(object sender, EventArgs e)
    {
         if (!IsPostBack)
         {
               Fill();
         }
    }

填充();获取需要在下拉列表中加载的一些类型。

我的问题:

第一步:我正在改变ddl1一切正常。 第二步:我正在更改ddl2,现在事件为ddl1和ddl2触发。但是在这种情况下只需要触发ddl2。 我不知道为什么在这种情况下ddl1会发生火灾。谁能告诉我我错在哪里或者我该怎么办?

2 个答案:

答案 0 :(得分:1)

这是因为您将所有三个下拉列表的OnSelectedIndexChanged设置为ddl1change。触发该方法后,ddl1中的值将更改。因此,它会触发回发。 enter image description here

答案 1 :(得分:-1)

在您的代码中,AutoPost后退为True。所以你正面临这个问题