在 Asp.net Rowcommand 事件中获取行索引

Posted

技术标签:

【中文标题】在 Asp.net Rowcommand 事件中获取行索引【英文标题】:Get Row Index on Asp.net Rowcommand event 【发布时间】:2011-09-24 02:30:37 【问题描述】:

我有一个 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

我想在RowCommand 触发时突出显示 (select) 目标行。

【问题讨论】:

【参考方案1】:

这是您问题的答案。

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

int RowIndex = gvr.RowIndex; 

【讨论】:

【参考方案2】:

如果您有 GridView 的内置命令,如插入、更新或删除,在行命令上您可以使用以下代码获取索引:

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

在自定义命令中,您可以将命令参数设置为yourRow.RowIndex.ToString(),然后在 RowCommand 事件处理程序中取回它。当然,除非您需要命令参数用于其他目的。

【讨论】:

【参考方案3】:

我可以在我自己的项目中使用上面的@rahularyansharma 的answer,只需稍作修改。我需要获取用户单击LinkButton 所在行上特定单元格的值。可以修改第二行以获得任意数量的单元格的值。

这是我的解决方案:

GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
string typecore = gvr.Cells[3].Text.ToString().Trim();

【讨论】:

【参考方案4】:
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)
    

    

【讨论】:

【参考方案5】:

或者,您可以使用 control 类代替它们的类型:

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

int RowIndex = row.RowIndex; 

【讨论】:

【参考方案6】:

图像按钮\按钮等

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

代码隐藏

protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e)

    int index = e.CommandArgument;

【讨论】:

以上是关于在 Asp.net Rowcommand 事件中获取行索引的主要内容,如果未能解决你的问题,请参考以下文章

如何在gridview的rowcommand事件中在新选项卡中打开页面?

GridView RowCommand 事件未触发

我们如何对 RowCommand、RowDeleting 等 gridview 事件进行 ajax 调用

在 GridView RowCommand 中获取 DataKey 值

ASP.Net Razor 语法显示 SQL SelectQuery 值

关于asp.net中页面事件加载的先后顺序