Unterschied in der OnClick-für ImageButton-Steuerelement innerhalb eines GridView-vs regular ImageButton
Arbeite ich an einem ASP.NET/C# - Projekt, und habe ein GridView-Steuerelement. Eine der Spalten ist ein TemplateField/ItemTemplate mit einem ImageButton-innen. Während das OnClick-Ereignis habe ich ein panel sichtbar. Wenn dies mit einer regelmäßigen ImageButton, die Seite wird neu geladen und das panel sichtbar ist. Dies geschieht nicht mit meinem ImageButton-Steuerelement innerhalb des GridView-Steuerelements. Weiß jemand wie ich das machen kann, es so zu tun, oder warum ist das so?
Vielen Dank für Ihre Zeit, bitte lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.
Hier die relevanten asp-definition
<asp:TemplateField ItemStyle-Width="90px" ItemStyle-VerticalAlign ="Bottom" ItemStyle-HorizontalAlign ="Center" HeaderText="Add Alias">
<HeaderStyle Font-Bold="True" Font-Size="11px" VerticalAlign="Bottom"/>
<ItemTemplate>
<asp:ImageButton ID ="btnAddAliasHeader" runat="server" ImageUrl="~/img/AddAlias.gif" onclick="btnAddAlias_Click" />
</ItemTemplate>
</asp:TemplateField>
Und hier ist das C# für die OnClick-Funktion.
protected void btnAddAlias_Click(object sender, EventArgs e)
{
ImageButton btnAddAlias = (ImageButton)sender;
GridViewRow row = (GridViewRow)btnAddAlias.Parent.Parent;
int rowIndex = row.RowIndex;
lblSelectedCity.Text = gvResults.Rows[rowIndex].Cells[0].Text;
lblSelectedCountry.Text = ddlCountry.Text;
pnlAddAlias.Visible = true;
}
Habe ich den OnRowCommand Veranstaltung und machte das panel sichtbar, aber es immer noch nicht zeigen. Ich denke, es kann etwas damit zu tun haben postback, denn wenn ich dann auf den button außerhalb des gridview-Steuerelements, auf das reload-anschließend das panel aus-Taste innerhalb des gridview zeigt sich gut.
Edit: ich bin ein idiot und Links heraus, dass all dies passiert in einem updatepanel.
- Zeig uns etwas code.
- Sind sowohl die
GridView
und diePanel
im gleichenUpdatePanel
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Button
sImageButton
s undLinkButton
s nicht FeuerClick
Veranstaltungen, wenn Sie in einem Steuerelement-Vorlage, wie Sie beschreiben. (Edit: es sei denn, verwendet, mit derOnClick
- Eigenschaft des Steuerelements) Statt, die mit control ein Ereignis auslöst, im Fall derGridView
es ist einRowCommand
Veranstaltung. Verwenden Sie dieCommandName
undCommandArgument
Eigenschaften der Schaltfläche, um die richtigen Maßnahmen zu ergreifen, in der event-handler, wie unten gezeigt:Markup:
Code:
Den Tasten/imagebuttons in einem container, der wie ein gridview-Steuerelement (listview, repeater, etc) haben Ihr click-Ereignis sprudelte der container selbst. Um das Fenster sichtbar ist, müssen Sie den Befehl name und command-argument-Eigenschaften auf die Schaltfläche, und verwenden Sie dann die OnRowCommand-Ereignis des gridview-Steuerelements zur AUSLAGE legen Sie das panel
HTH
Bin ich angenommen, dass Ihre Veranstaltung nicht brennen sollten Sie den commandname-Attribut auf die imagebutton - und Holen Sie es bis auf die onrowcommand des gridview - oder registrieren Sie Ihre imagebutton-Steuerelement klicken Sie auf Ereignis in der onrowcreated Veranstaltung.
Wenn das postback ist nicht erforderlich. Sorry wenn ich das falsch verstanden, die Frage. Sie könnten statt mit einer Bild-Taste (server control), verwenden Sie einen link oder ein normales Bild, eingewickelt in ein a-tag und jQuery. Dies verhindert, dass die postback an den server. Hoffe, das hilft.
Hoffe, das hilft.
Können Sie Benutzer Oncommand-Ereignis für gridview anstatt Onclick auf die besonders nur zu kontrollieren, müssen Sie commandname von der Steuerung und überprüfen Sie es von e.commandname und tun, was immer Sie wollen durchführen