Warum ist nicht das SelectedIndexChanged-Ereignis auslösen aus einer dropdownlist in einer GridView?
Ich Schaffe es nicht, meine SelectedIndexChanged meiner dropdownlist Feuer. Ich habe Folgendes:
<form id="form1" runat="server">
<div>
<asp:GridView id="grdPoll" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="Review" Value="Review" Selected="True">Review</asp:ListItem>
<asp:ListItem Text="Level1" Value="lvl1">Send Back to Level1</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="lblCity" runat="server" Text="Label"></asp:Label>
</div>
</form>
In meinem code habe ich dieses:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
this.lblCity.Text = ((DropDownList)sender).SelectedValue;
}
Wenn ich das gleiche ddl außerhalb des gridview-Steuerelements, es feuert.
Dem postback stattfindet und die autopostback auf true gesetzt ist. Das event wird nie ausgelöst. Warum erhalte ich nicht meine Veranstaltung zu Feuer innerhalb des gridview?
Danke.
InformationsquelleAutor johnny | 2009-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, diese Frage wurde mehr als vor einem Monat und möglicherweise irrelevant sein jetzt, aber @LFSR war freundlich genug, um es zu Bearbeiten vor kurzem, es in die "Aktive Fragen" - Liste.
Da bleibt es unbeantwortet (224 views), Ich dachte, ich sollte es zu gehen:
Das problem ist, dass im Kontext eines GridView, DropDownList(nachfolgend als DDL) ist eine dynamische Kontrolle, und daher sind seine Veranstaltungen müssen befestigt werden, auf Postback.
Wenn dieses Konzept verstanden wird, die Lösung wird relativ einfach :
ASPX:
CS Code:
Herzlich willkommen Johnny! Gerne unterstützen. 🙂
InformationsquelleAutor Cerebrus
Fand ich anbringen eines event-handler im ItemDataBound-hat nicht funktioniert; auch die DropDownList nicht CommandName oder CommandArgument Eigenschaften, also der raster ist mit ItemCommand-Ereignis wird nicht ausgelöst, in Reaktion auf ein dropdown ausgewählten index ändern.
Jedoch, Sie können dies tun, in Page_Load, um zu bestimmen, was die Ursache der post: -
Mein raster enthält einen heap der dropdowns genannt cboAttribute, und das gibt mir einen Verweis auf die eine, verursacht der post.
InformationsquelleAutor sh1rts
Watch out, wenn Sie die Datenbindung. Ich hatte dasselbe problem auf einer test-Seite. Die DD selectedIndex-Ereignis nicht ausgelöst. Es stellt sich heraus, ich war rebinding die gridview-Komponente auf jeder Seite dienen, die effektiv tötet die Veranstaltung. Sobald ich nur gebunden, nur auf
page.ispostback=false
die Ereignisse ausgelöst, wie erwartet, und wurde abgeholt von der generischen DD-hander. Sie können von dort aus Durchlaufen Sie das gridview-clientIDs Ihrer DDs zu finden, die passtsender.clientID
im generic handler.InformationsquelleAutor computski
Gut, das nicht beheben das problem für mich.
Ich muß sagen, das war richtig funktioniert auf meiner box auch ohne Draht zu der Veranstaltung in der RowDataBound. Das ist nicht das einzige problem, das die gridview-Komponente zu haben scheinen, jetzt, auch datakey-Sammlungen verschwinden, ich denke, das Netz ist nur entworfen, um die Arbeit mit dem asp.net datasources um richtig zu handeln.
Ich werde umschreiben meines Codes zu arbeiten mit einem Objekt-Datenquelle zu bestätigen meine Vermutung.
InformationsquelleAutor
Ich kann nicht erklären warum, aber ich erlebe das gleiche Verhalten, wenn ich Sie dynamisch hinzufügen ListItem ist, um das DropDown-Menü. Nur sinnvoll, wenn Sie nicht brauchen, die ListItem-Wert.
Versuchen Sie, den string-Wert anstelle eines ListItem:
Beispiel:
InformationsquelleAutor
Stieß ich auf ein ähnliches problem mit einer combobox in einem raster nicht feuern. In meinem Fall der Grund, dass die Methode nicht feuern war, denn es war eine Sache musste überprüft werden, was verborgen war. So stellen Sie sicher, zu überprüfen, dass Sie keine versteckten Prüfer könnte das brennen und die Verhinderung der combobox ausführen.
InformationsquelleAutor user3731495