繁体   English   中英

ASP:Dropdownlist OnSelectedIndexChanged事件未触发

[英]ASP:Dropdownlist OnSelectedIndexChanged Event Not Firing

我在UpdatePanel中有一个非数据绑定的Dropdownlist:

<asp:UpdatePanel runat="server" ID="FiltersUpdPnl">
    <ContentTemplate>
        <div class="filters">
            <asp:Button runat="server" ID="ExportBtn" Text="Export Map to Image" />
            <br />
            Show: 
            <asp:DropDownList runat="server" ID="CapNumProjectsDDL" AutoPostBack="true" OnSelectedIndexChanged="ApplyFilters" OnPreRender="CapNumProjectsDDL_PreRender">
                <%--<asp:ListItem Value="0" Text="" Selected="True"></asp:ListItem>--%>
                <asp:ListItem Value="1" Text="Capacity"></asp:ListItem>
                <asp:ListItem Value="2" Text="Number of Projects"></asp:ListItem>
            </asp:DropDownList>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

事件处理程序并不十分重要,它只是做一些事情:

protected void ApplyFilters(object sender, EventArgs e)
{
    //Do Stuff relating to the selected Value
}

页面加载时,默认情况下会选择“容量”,因为它是第一个ListItem。 当我关闭“项目数”时,事件处理程序将按预期触发,执行代码。 但是,当我切换回“容量”时,处理程序不会触发。 回发正在发生,但我希望它专门击中两个列表项上的事件处理程序。

您可以看到我那里有一个注释掉的“ 0值” ListItem。 当我取消评论时,“容量”和“项目数”都会按预期到达事件处理程序。

问题是页面加载时,它正在加载与“ Capacity”下拉列表相关的数据,因此我希望显示“ Capacity” ListItem,但能够在选中时触发事件处理程序。

我在这里错过明显的东西吗?

E:我尝试为DDL_Prerender事件添加一个处理程序,将SelectedIndex设置为200或明显不在列表中的内容,希望它会取消选择“ Capacity”,但这也不起作用。

这是预渲染代码:

protected void CapNumProjectsDDL_PreRender(object sender, EventArgs e)
{
    CapNumProjectsDDL.SelectedIndex = 200;
}

这并没有改变它的工作方式。

即使您在下拉框中已经选择的项目中进行选择,您似乎也希望该下拉元素提高更改。 我相信这将行不通,并且问题的原因不在服务器端asp.net dropdownlist控件中,而是在HTML select元素如何工作(对DropDownList控件进行呈现)中。

问题是,如果用户选择与显示下拉框之前相同的项目,则HTML select元素不会触发更改事件(因为从控件状态的角度来看,它没有更改)。

因此,我相信可以实现您想要的行为,但是您不应该使用HTML选择控件,而应该实现自定义解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM