Frage

Ich habe eine Gridview mit ImageButtons auf eine Säule über eine Template hinzugefügt. Ich habe eine Funktion zum „OnClick“ Ereignis verbunden.

Wenn in dieser Funktion, wie kann ich den Index der Zeile erhalten, die die Schaltfläche hat, die angeklickt wurde. Es scheint, dass alles, was ich habe, ist die Mauskoordinaten auf der Seite.

War es hilfreich?

Lösung

Statt durch die Reihen der Looping können Sie diese verwenden

<asp:ImageButton runat="server" id="ibtn1" ... RowIndex='<%# Container.DisplayIndex %>' 
OnClick="button_click"/>

...

protected void button_click(object sender, EventArgs e){
    ImageButton ibtn1 = sender as ImageButton;
    int rowIndex = Convert.ToInt32(ibtn1.Attributes["RowIndex"]);

    //Use this rowIndex in your code
}

Andere Tipps

Guss den Absender zu einem Image warf dann die NamingContainer der Schaltfläche Bild auf eine Reihe:

VB:

Dim btn as ImageButton = CType(sender, ImageButton)

Dim row as GridViewRow = CType(btn.NamingContainer, GridViewRow)

C #:

ImageButton btn = (ImageButton)sender;

GridViewRow row = (GridViewRow)btn.NamingContainer;

Würde mit bdukes darüber einig, dass die einfachste Möglichkeit ist, das Commandargument zu verwenden. Binden Sie Ihre Daten die eindeutige ID-Nummer in dieser Eigenschaft, dann behandeln Sie das _RowCommand Ereignis.

Zum Beispiel:

<asp:TemplateField >
    <HeaderStyle Width="20" />
    <ItemTemplate>
        <asp:ImageButton ImageUrl="images/icons/iCal.png" CommandArgument='<%# Eval("Event_ID") %>' ToolTip="iCal" runat="server" Height="18" Width="18" />
    </ItemTemplate>
</asp:TemplateField>


Protected Sub gv_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gv.RowCommand

   e.CommandArgument    'use this value in whatever way you like

End Sub

Der einfachste Weg, die ich gefunden habe, ist die Befehl Ereignis über die Ereignis klicken und den Element-ID als Befehl Argument senden.

Sie könnten auch eine Schleife über die Zeilen in der Gridview und vergleichen Sie das Image in der Reihe zum sender Argumente in Ihrem Click-Ereignisse.

Das ist sehr guter Trick. Ich habe auch einen anderen Trick. Sie können es versuchen ...

 protected void userGridview_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Select")
        {
            GridViewRow rowSelect = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
            int rowindex = rowSelect.RowIndex;
         }
    }

Es ist eine gute Methode auch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top