it-swarm.com.de

Holen Sie sich den Zeilenindex für das Asp.net Rowcommand-Ereignis

Ich habe ein asp.net GridView:

<asp:TemplateField HeaderText="View Faktor" ShowHeader="False" Visible="True">
    <ItemTemplate>
        <asp:ImageButton ID="imgBtn1" CssClass="SelectRow" runat="server" CausesValidation="false"
            CommandArgument='<%#(eval("mprID")) %>' CommandName="ViewFactors" ImageUrl="~/tadarokat/Images/factor.png"
            Text="" />
    </ItemTemplate>
</asp:TemplateField>

Wie kann ich rowIndex bei Zeilenbefehlsereignissen abrufen?

Ich möchte die Zielzeile (select) markieren, wenn RowCommand ausgelöst wird.

31
Shahin

dies ist die Antwort auf Ihre Frage.

GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);

int RowIndex = gvr.RowIndex; 
67

ImageButton\Button usw.

CommandArgument='<%# Container.DataItemIndex%>' 

code-Behind

protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e)
{
    int index = e.CommandArgument;
}
12
Vincenzo Costa

Wenn Sie über einen integrierten GridView-Befehl wie Einfügen, Aktualisieren oder Löschen verfügen, können Sie im Zeilenbefehl den folgenden Code verwenden, um den Index abzurufen:

int index = Convert.ToInt32(e.CommandArgument);

In einem benutzerdefinierten Befehl können Sie das Befehlsargument auf yourRow.RowIndex.ToString() setzen und es dann im RowCommand-Ereignishandler zurückholen. Es sei denn, Sie benötigen das Befehlsargument für einen anderen Zweck.

4
pallavi

Oder Sie können eine control -Klasse anstelle ihrer Typen verwenden:

GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);

int RowIndex = row.RowIndex; 
3
5377037

Ich konnte @ rahularyansharma's answer in meinem eigenen Projekt mit einer geringfügigen Änderung verwenden. Ich musste den Wert bestimmter Zellen in der Zeile abrufen, in der der Benutzer auf ein LinkButton klickt. Die zweite Zeile kann geändert werden, um den Wert beliebig vieler Zellen abzurufen.

Hier ist meine Lösung:

GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
string typecore = gvr.Cells[3].Text.ToString().Trim();
1
Davezilla
protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e)
{
    try
    {
        if (e.CommandName == "Delete")
        {
            GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
            int RemoveAt = gvr.RowIndex;
            DataTable dt = new DataTable();
            dt = (DataTable)ViewState["Products"];
            dt.Rows.RemoveAt(RemoveAt);
            dt.AcceptChanges();
            ViewState["Products"] = dt;
        }
    }
    catch (Exception ex)
    {
        throw;
    }
}
protected void gvProductsList_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    try
    {
        gvProductsList.DataSource = ViewState["Products"];
        gvProductsList.DataBind();
    }
    catch (Exception ex)
    {

    }
}
1
Siddhesh