web-dev-qa-db-ja.com

Asp.net Rowcommandイベントで行インデックスを取得

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

行コマンドイベントでrowIndexを取得するにはどうすればよいですか?

selectが起動したときに(RowCommand)ターゲット行を強調表示します。

31
Shahin

これはあなたの質問に対する答えです。

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

int RowIndex = gvr.RowIndex; 
67

ImageButton \ボタンなど.

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

コードビハインド

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

挿入、更新、削除などのGridViewの組み込みコマンドがある場合、行コマンドでは、次のコードを使用してインデックスを取得できます。

_int index = Convert.ToInt32(e.CommandArgument);
_

カスタムコマンドでは、コマンド引数をyourRow.RowIndex.ToString()に設定し、RowCommandイベントハンドラーで取得できます。もちろん、別の目的でコマンド引数が必要な場合を除きます。

4
pallavi

または、タイプの代わりにcontrolクラスを使用できます。

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

int RowIndex = row.RowIndex; 
3
5377037

私は自分のプロジェクトで@rahularyansharmaの answer を使用することができました。ユーザーがLinkButtonをクリックした行の特定のセルの値を取得する必要がありました。 2行目を変更して、必要な数のセルの値を取得できます。

私の解決策は次のとおりです。

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