onselectedindexchanged在同一项的下拉列表中只被称为客户端?

时间:2012-11-22 11:53:57

标签: c# .net ajax updatepanel

我有一个更新面板:

<asp:UpdatePanel ID="upAppartiene" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:DropDownList ID="ddAppartiene" runat="server" AutoPostBack="true" onselectedindexchanged="ddAppartiene_SelectedIndexChanged">
            <asp:ListItem Text="---" Value="0"></asp:ListItem>
            <asp:ListItem Text="Value 1" Value="1"></asp:ListItem>
            <asp:ListItem Text="Value 2" Value="2"></asp:ListItem>
        </asp:DropDownList>
    </ContentTemplate>
</asp:UpdatePanel>

当我每次选择不同的值时,一切正常:它调用服务器端的上下文,页面加载和ddAppartiene_SelectedIndexChanged()方法。

但是,如果我单击一个值,而不是重新单击相同的值,它会调用服务器(调用Page Load),但是方法ddAppartiene_SelectedIndexChanged()不会被调用。

因此,onselectedindexchanged在客户端工作,但在服务器端不行?我不这么认为......

我哪里错了?

2 个答案:

答案 0 :(得分:4)

我只是一个新手,但是当选择的索引实际发生变化时,是否只选择了引导变量事件?如果您重新单击相同的值,则不会发生任何更改,因此事件不会触发。

答案 1 :(得分:1)

就像事件名称“SelectedIndexChanged”一样,索引需要在触发之前更改。单击两次相同的项目时,索引仍然与上一个相同,因此未更改。在这一点上,我认为它只是一个点击而没有改变。

我要做的是避免这样做,实际上是提供一个OK按钮。每当您单击该按钮时,始终选择,更改或不更改所选值。