ASP.NET DropDownList AutoPostback не работает - что я пропустил?


Я пытаюсь получить выпадающий список для AutoPostBack через UpdatePanel, когда выбранный элемент изменяется. Я немного схожу с ума от того, почему это не работает.

Есть ли у кого-нибудь быстрые идеи?

Страница ASPX:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always" ChildrenAsTriggers="true" >      
  <ContentTemplate>
    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"  onselectedindexchanged="DropDownList1_SelectedIndexChanged">
      <asp:ListItem>item 1</asp:ListItem>
      <asp:ListItem>item 2</asp:ListItem>
    </asp:DropDownList>
  </ContentTemplate>
</asp:UpdatePanel>

Code-behind (я поставил точку останова на присваивании строки, чтобы захватить обратную передачу):

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
  string s = "";
} 

Редактировать:

Хорошо, теперь он у меня работает. Очень странно. Все, что для этого потребовалось, - перезапустить Visual Studio. Это того, что пугает меня как разработчика ;) я думаю, что видел подобное раньше, где VS "выходит из синхронизации" wrt сборки, которую он запускает.

К вашему сведению, я запускаю VS 2008 Web Developer Express.

Спасибо тем, кто ответил.

5 3

5 ответов:

Я смог заставить его работать с тем, что вы опубликовали. Это код, который я использовал... В основном то, что у вас было, но я делаю исключение.

   <asp:ScriptManager ID="smMain" runat="server" />

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always" ChildrenAsTriggers="true" >      
      <ContentTemplate>
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"  onselectedindexchanged="DropDownList1_SelectedIndexChanged">
          <asp:ListItem>item 1</asp:ListItem>
          <asp:ListItem>item 2</asp:ListItem>
        </asp:DropDownList>
      </ContentTemplate>
    </asp:UpdatePanel>



    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }

Я перепробовал множество вариантов, чтобы увидеть, есть ли что-то не так, но каждый раз возникало исключение.

Вы можете попробовать маршрут исключения, чтобы увидеть, происходит ли обратная передача, и это не проблема отладчика.

  • Одна из проблем может быть связана с Vista, а не с запуском Visual Studios от имени администратора. Я знаю это имеет тенденцию не допускать отладки.

  • Может быть, сборка, которую вы запускаете, не соответствует коду? Это может произойти, если вы "просмотрите в Browswer" и затем присоедините отладчик.

Работает ли он, когда вы берете UpdatePanel?

EnableViewState= "true" в UpdatePannel определенно решит проблему.

У меня тоже были те же проблемы, как ни странно, моя панель обновления запускала OnTextChanged в FireFox, но была мертва в IE. Restartin VS 2005 исправил эту проблему. : O

Вместо использования AutoPostBack= "true" установите DropList в качестве триггера на панели обновления.