2008-12-04 4 views
3

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

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

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-за (я поставил точку останова на присвоение строки для захвата постбэк):

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

Edit:

OK, Сейчас я работаю. Очень странно. Все, что нужно, это перезагрузка Visual Studio. Это то, что пугает меня как разработчика;) Я думаю, что раньше я видел подобное, где VS «не синхронизируется» с сборкой, в которой он работает.

FYI Я использую VS 2008 Web Developer Express.

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

ответ

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

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

+0

hey thanks man - я попробую ваш код и дам вам знать, как я нахожусь – Ben

+0

Хорошо, теперь у меня это работает. Очень странно. Все, что нужно, это перезагрузка Visual Studio. Это то, что пугает меня как разработчика;) Я думаю, что раньше я видел подобное, где VS «не синхронизируется» с сборкой, в которой он работает. Благодаря! – Ben

+0

О да, забыл об этом. Если бы это случалось очень много. –

1

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

+0

спасибо - просто попробовал. все еще не работает! Я собираюсь создать новую страницу с нуля и попробовать автоповтор. – Ben

0

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

-1

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

1

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

Смежные вопросы