2013-05-08 9 views
9

Ich habe eine Dropdown-Liste in UpdatePanel_2, die ausgefüllt wird, wenn Button_1 in UpdatePanel_1 angeklickt wird.Dropdown-Liste Ausgewählter Index geändert, funktioniert nicht im Aktualisierungsfenster

Mein ddlist Markup ist,

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

dann hinter Code,

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

Ich habe auch versucht Putting Autopostback = meine Dropdown wahr, noch ohne Erfolg.

Ich habe triggre auch Panel 2, aber kein Gewinn zu aktualisieren,

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

I Dropdownlist mit einer Taste nicht PAGE LOAD METHODE BITTE LESEN, bevor er antwortete am bevölkern. Danke

+0

Wir können nicht sagen, was nicht funktioniert, wenn Ihre SelectedIndex-Methode leer ist. Bitte geben Sie mehr Code an. – Marco

+0

@Serv hast du beim Debuggen schon mal von Breakpoints gehört? – Mathematics

+0

Oh, ich hatte den Eindruck, dass der Code im Inneren fehlerhaft war, nicht der ausgewählte Index wird überhaupt nicht gefeuert. Entschuldigung, mein fehler. – Marco

Antwort

11

Überprüfen Sie die Daten, die die DropDownList im Page_Load Ereignis zu füllen und immer IspostBack überprüfen:

if(!IsPostBack) 
{ 
//DropDownList configuration 
} 

Verwendung EnableViewState:

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

Hoffe, dass es Ihnen hilft.

+0

Wenn Sie erste Zeile meines Beitrags lesen, sagen, dass ich nicht bevölkern ddl mit page_load-Methode, danke – Mathematics

+3

Wie war das die Antwort auf Ihre Frage? Ich habe genau das gleiche Problem mit dem Unterschied, dass ich meine DDL nicht in meinem Front-Markup habe, sondern komplett in Code-Behind. Mein SelectedIndexChanged-Ereignis wird nicht ausgelöst, egal was ich mache. –

+0

Entschuldigung, das hat nicht für mich funktioniert –

0

Bitte, wenn Sie es in Page_Load() initialisieren, überprüfen Sie, ob nicht Postback ist. Wenn Sie das nicht tun, werden Sie immer den Standardwert festlegen, der den Wert ersetzt, der im Ereignis eingestellt ist.

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

Sorry: S? Ich bin mir nicht sicher, was Sie sagen wollen Sir – Mathematics

+0

Ich sage, dass Sie die Dropdown-Liste in der!IsPostBack Bedingung, wenn nicht, jedes Mal, wenn Sie ein Postback haben Sie die selectedvalue Eigenschaft verloren –

+0

Ich möchte teilweise zurück Sir tun – Mathematics

9

Ich hatte das gleiche Problem. Mein Problem war, dass die Werte meines Listitem alle gleich waren: 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> 

es so sein sollte:

<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> 

Hoffnung, das hilft. Dies ist manchmal schwer zu finden :)

+1

Verbringen Sie 2 Stunden, dann fand ich Ihre Antwort. Es half –

0

Sie können das Init-Ereignis anstelle von SelectIndexChanged verwenden. Es funktionierte gut für mich. Hoffe, du hast meinen Standpunkt verstanden.

0

Es war auch ein Kabelproblem für mich. Schließlich war es wegen identischer Listeneinträge im Dropdown wie unten gezeigt. Während der Entwicklung können Sie dieselben Elemente nur zum Testen verwenden. ändere sie.

<asp:ListItem>Business</asp:ListItem> 
<asp:ListItem>Business</asp:ListItem> 
<asp:ListItem>Business</asp:ListItem> 
<asp:ListItem>Business</asp:ListItem>