У меня есть следующая разметка:
<asp:DropDownList ID="dd1" AutoPostBack="true" runat="server">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="dd2" AutoPostBack="true" onchange="javascript:return true;" runat="server">
<asp:ListItem Value="1">3</asp:ListItem>
<asp:ListItem Value="2">4</asp:ListItem>
</asp:DropDownList>
Связано с этим:
Protected Sub changed1(sender As Object, e As EventArgs) Handles dd1.SelectedIndexChanged
End Sub
Protected Sub changed2(sender As Object, e As EventArgs) Handles dd2.SelectedIndexChanged
End Sub
Когда индекс dd2 изменяется, вы ожидаете, что его обработчик сработает, верно?Ну, это не так.Вместо этого он «ставится в очередь» и запускается после срабатывания обработчика dd1 при изменении его индекса.Если вы снимаете onchange="javascript:return true;"
с dd2, он срабатывает очень хорошо.
Кто-нибудь знает, что здесь происходит?
Редактировать: Мой первый ответ был бы с использованием выражений возврата в выпадающем спискене работает так же, как событие нажатия кнопки, но клянусь, я делал это раньше с помощью выпадающих списков.
Обновление: Я могу принудительно вызвать событие сервера, выполнивэто в Javascript:
__doPostBack("<%=dd2.ClientID %>", '');
Я не понимаю, почему я должен это делать, но это работает.Тем не менее, я все еще хочу сделать это по-другому, поэтому, если кто-то знает, пожалуйста, дайте мне знать, чтобы я мог пометить вас как ответ.