2013-05-08 15 views
9

Mam rozwijaną listę w UpdatePanel_2, zapełnia się po kliknięciu Button_1 w UpdatePanel_1.Lista rozwijana Wybrany indeks zmieniony nie działa w panelu Aktualizacja

Moja ddlist znaczników jest

<asp:DropDownList id="drop1" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="Drop1_SelectedIndexChanged" /> 

następnie kod za to,

protected void Drop1_SelectedIndexChanged(object sender, EventArgs e) 
     { } 

Próbowałem też wprowadzenie AutoPostBack = true do mojego DropDownList, wciąż bez powodzenia.

Dodałem też triggre zaktualizować panelu 2, ale nie zysk,

 <Triggers> 
    <asp:AsyncPostbackTrigger ControlID="drop1" EventName="SelectedIndexChanged" /> 
</Triggers> 

ja wypełnianie DropDownList za pomocą przycisku nie stronie Metoda LOAD ZAPOZNAJ przed odebraniem. Dzięki

+0

Nie możemy powiedzieć, co nie działa, jeśli twoja metoda SelectedIndex jest pusta. Podaj więcej kodu. – Marco

+0

@Serv czy słyszałeś o punktach przełomowych podczas debugowania? – Mathematics

+0

Och, byłem pod wrażeniem, że kod w środku był błędny, a wybrany indeks nie został w ogóle wyrzucony. Przepraszam moja wina. – Marco

Odpowiedz

11

sprawdzić dane do wypełnienia DropDownList w przypadku Page_Load i zawsze sprawdzić IspostBack:

if(!IsPostBack) 
{ 
//DropDownList configuration 
} 

Korzystając EnableViewState:

<asp:DropDownList ID="ddlAddDepPlans" runat="server" AutoPostBack="true" EnableViewState="true" /> 

Nadzieję, że to pomaga.

+0

Jeśli czytasz pierwszą linię mojego posta, to mówiąc, że nie jestem wypełnienie ddl przy użyciu metody page_load, dzięki – Mathematics

+3

Jaka była ta odpowiedź na twoje pytanie? Mam dokładnie ten sam problem z różnicą, że nie mam mojego DDL w moim znaczniku frontowym, ale tworzę go całkowicie w kodzie. Zdarzenie Moje SelectedIndexChanged nie zostanie uruchomione, niezależnie od tego, co zrobię. –

+0

Niestety, to nie działało dla mnie –

0

Proszę, po zainicjowaniu go w Page_Load() sprawdź, czy nie jest oddzwonienie. Jeśli tego nie zrobisz, zawsze ustawisz wartość domyślną, która zastąpi wartość ustawioną w zdarzeniu.

if(!IsPostBack) 
{ 
//DropDownList configuration 
} 
+0

sorry: S? Nie jestem pewien, co próbujesz powiedzieć sir – Mathematics

+0

Mówię, że potrzebujesz wypełnić listę rozwijaną wewnątrz!IsPostBack warunek, jeśli nie, za każdym razem, gdy zrobiłeś odświeżenie, straciłeś właściwość selectedvalue –

+0

Chcę zrobić częściową odpowiedź zwrotną sir – Mathematics

9

Miałem ten sam problem. Moim problemem było to, że wartości moich ListItems były wszystkie takie same: D

<asp:DropDownList ID="ddlFilterLogins" runat="server" Visible="true" AutoPostBack="true"> 
    <asp:ListItem Value="0" Text="All"></asp:ListItem> 
    <asp:ListItem Value="0" Text="Some"></asp:ListItem> 
    <asp:ListItem Value="0" Text="Some more"></asp:ListItem> 
</asp:DropDownList> 

Powinno być tak:

<asp:DropDownList ID="ddlFilterLogins" runat="server" Visible="true" AutoPostBack="true"> 
    <asp:ListItem Value="0" Text="All"></asp:ListItem> 
    <asp:ListItem Value="1" Text="Some"></asp:ListItem> 
    <asp:ListItem Value="2" Text="Some more"></asp:ListItem> 
</asp:DropDownList> 

Nadzieja to pomaga. To może być trudne do znalezienia czasami :)

+1

Spędzić 2 godziny, a następnie znalazłem odpowiedź. Pomogło –

0

Możesz użyć zdarzenia Init zamiast SelectIndexChanged. To zadziałało dla mnie. Mam nadzieję, że masz mój punkt widzenia.

0

To był również problem przewodowy dla mnie. W końcu było to z powodu identycznych listitem w liście rozwijanej, jak pokazano poniżej. w trakcie rozwoju możesz używać tych samych przedmiotów tylko do testowania. zmienić je.

<asp:ListItem>Business</asp:ListItem> 
<asp:ListItem>Business</asp:ListItem> 
<asp:ListItem>Business</asp:ListItem> 
<asp:ListItem>Business</asp:ListItem> 
Powiązane problemy