ASP.NET DropDownList AutoPostback не работает - что мне не хватает? - PullRequest
3 голосов
/ 04 декабря 2008

Я пытаюсь получить DropDownList в 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>

Кодовый код (я установил точку останова в строковом присваивании для захвата обратной передачи):

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

Edit:

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

К вашему сведению Я использую VS 2008 Web Developer Express.

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

Ответы [ 5 ]

5 голосов
/ 04 декабря 2008

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

   <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 Studio не запускается от имени администратора. Я знаю, что имеет тенденцию не разрешать отладку.

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

1 голос
/ 01 декабря 2013

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

1 голос
/ 04 декабря 2008

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

0 голосов
/ 17 июля 2009

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

0 голосов
/ 20 апреля 2009

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

...